From 2ddb7d0afcbfec647dd20eea96c1e38b4a23b9a3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Sun, 3 May 2026 23:02:23 +0800 Subject: [PATCH] Refactor and add advanced theme settings --- Directory.Packages.props | 44 +- README.BlazorServer.md | 156 +- README.BlazorWebAssembly.md | 164 +- README.WebApp.md | 215 +- README.md | 56 +- img/theme-home.png | Bin 0 -> 22266 bytes img/theme-settings-panel.png | Bin 0 -> 53869 bytes lsw.Abp.AntDesignUI.sln | 242 ++ .../BlazorAntDesignThemeScriptContributor.cs | 1 + .../AntDesignTheme/LanguageSwitch.razor | 2 +- ...etCoreComponentsWebAntDesignThemeModule.cs | 4 +- .../Layout/AbpPageHeader.razor | 8 +- ...tCore.Components.Web.AntDesignTheme.csproj | 1 + .../Settings/AntDesignSettingsProvider.cs | 102 +- .../Settings/IAntDesignSettingsProvider.cs | 13 +- .../Themes/AntDesignTheme/DefaultLayout.razor | 154 +- .../AntDesignTheme/DefaultLayout.razor.cs | 180 +- .../Themes/AntDesignTheme/MainMenu.razor | 12 +- .../Themes/AntDesignTheme/MainMenu.razor.cs | 70 +- .../Themes/AntDesignTheme/MainMenuItem.razor | 10 +- .../AntDesignTheme/MainMenuItem.razor.cs | 15 +- .../Themes/AntDesignTheme/NavToolbar.razor | 3 +- .../Themes/AntDesignTheme/NavToolbar.razor.cs | 25 +- .../AntDesignTheme/ThemeSettingPanel.razor | 147 + .../AntDesignTheme/ThemeSettingPanel.razor.cs | 281 ++ .../wwwroot/libs/abp/css/theme.css | 1039 ++++- .../wwwroot/libs/abp/js/theme-settings.js | 200 + ...AssemblyAntDesignThemeScriptContributor.cs | 3 +- .../ComponentsComponentsBundleContributor.cs | 1 + .../AntDesignTheme/LanguageSwitch.razor | 2 +- ...emeManagementApplicationContractsModule.cs | 31 + .../Dtos/AntDesignThemePreferenceDto.cs | 22 + .../Dtos/UpdateAntDesignThemePreferenceDto.cs | 16 + ...teAntDesignThemeSettingsAvailabilityDto.cs | 10 + .../FodyWeavers.xml | 3 + .../IAntDesignThemePreferenceAppService.cs | 16 + .../AntDesignThemeManagementResource.cs | 8 + .../AntDesignThemeManagement/en.json | 48 + .../AntDesignThemeManagement/zh-Hans.json | 48 + ...emeManagement.Application.Contracts.csproj | 22 + ...eManagementPermissionDefinitionProvider.cs | 26 + .../AntDesignThemeManagementPermissions.cs | 8 + ...hemeManagementSettingDefinitionProvider.cs | 115 + .../AntDesignThemeManagementSettingNames.cs | 24 + .../Settings/AntDesignThemeSettingDefaults.cs | 42 + ...tDesignThemeManagementApplicationModule.cs | 12 + .../AntDesignThemePreferenceAppService.cs | 284 ++ .../FodyWeavers.xml | 3 + ...ntDesignThemeManagement.Application.csproj | 18 + ...DesignThemeManagementBlazorServerModule.cs | 14 + .../FodyWeavers.xml | 3 + ...DesignThemeManagement.Blazor.Server.csproj | 16 + ...nThemeManagementBlazorWebAssemblyModule.cs | 22 + .../FodyWeavers.xml | 3 + ...nThemeManagement.Blazor.WebAssembly.csproj | 19 + ...AbpAntDesignThemeManagementBlazorModule.cs | 23 + .../FodyWeavers.xml | 3 + ...Abp.AntDesignThemeManagement.Blazor.csproj | 16 + ...SettingsManagementGroupViewComponent.razor | 36 + ...tingsManagementGroupViewComponent.razor.cs | 120 + ...DesignThemeManagementSettingContributor.cs | 36 + .../Components/FeatureManagementModal.razor | 2 +- .../PermissionManagementModal.razor | 6 +- .../AntDesignThemeGroupViewComponent.razor.cs | 2 +- .../SettingManagement/SettingManagement.razor | 32 +- .../SettingManagement.razor.cs | 32 +- .../AntDesignSettingDefultPageContributor.cs | 8 - samples/WebApp/README.md | 70 +- .../BookStore.Blazor.Client.csproj | 1 + .../BookStoreBlazorClientModule.cs | 2 + .../BookStore.Blazor/BookStore.Blazor.csproj | 1 + .../BookStore.Blazor/BookStoreBlazorModule.cs | 6 +- .../src/BookStore.Blazor/package-lock.json | 3743 ++++------------- .../WebApp/src/BookStore.Blazor/package.json | 4 +- samples/WebApp/src/BookStore.Blazor/yarn.lock | 612 +-- .../MongoDbBookStoreDbSchemaMigrator.cs | 21 +- samples/WebAppBlazorServer/README.md | 72 +- .../BookStore.Blazor/BookStore.Blazor.abppkg | 3 +- .../BookStore.Blazor/BookStore.Blazor.csproj | 1 + .../BookStore.Blazor/BookStoreBlazorModule.cs | 6 +- .../src/BookStore.Blazor/package-lock.json | 3743 ++++------------- .../src/BookStore.Blazor/package.json | 4 +- .../src/BookStore.Blazor/yarn.lock | 612 +-- .../MongoDbBookStoreDbSchemaMigrator.cs | 21 +- samples/WebAppBlazorWebAssembly/README.md | 75 +- .../BookStore.Blazor.Client.csproj | 1 + .../BookStoreBlazorClientModule.cs | 2 + .../src/BookStore.DbMigrator/appsettings.json | 2 +- .../BookStore.HttpApi.Host.abppkg | 5 +- .../BookStore.HttpApi.Host.csproj | 1 + .../BookStoreHttpApiHostModule.cs | 5 +- .../BookStore.HttpApi.Host/appsettings.json | 2 +- .../src/BookStore.HttpApi.Host/package.json | 2 +- .../src/BookStore.HttpApi.Host/yarn.lock | 335 +- .../MongoDbBookStoreDbSchemaMigrator.cs | 21 +- src/Lsw.Abp.AntDesignUI/AbpCrudPageBase.cs | 2 +- 96 files changed, 6460 insertions(+), 7214 deletions(-) create mode 100644 img/theme-home.png create mode 100644 img/theme-settings-panel.png create mode 100644 modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor create mode 100644 modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor.cs create mode 100644 modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/js/theme-settings.js create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/AbpAntDesignThemeManagementApplicationContractsModule.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/AntDesignThemePreferenceDto.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemePreferenceDto.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemeSettingsAvailabilityDto.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/FodyWeavers.xml create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/IAntDesignThemePreferenceAppService.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/AntDesignThemeManagementResource.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/en.json create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/zh-Hans.json create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Lsw.Abp.AntDesignThemeManagement.Application.Contracts.csproj create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissionDefinitionProvider.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissions.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingDefinitionProvider.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingNames.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeSettingDefaults.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AbpAntDesignThemeManagementApplicationModule.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AntDesignThemePreferenceAppService.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/FodyWeavers.xml create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/Lsw.Abp.AntDesignThemeManagement.Application.csproj create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/AbpAntDesignThemeManagementBlazorServerModule.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/FodyWeavers.xml create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/Lsw.Abp.AntDesignThemeManagement.Blazor.Server.csproj create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/AbpAntDesignThemeManagementBlazorWebAssemblyModule.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/FodyWeavers.xml create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly.csproj create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/AbpAntDesignThemeManagementBlazorModule.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/FodyWeavers.xml create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Lsw.Abp.AntDesignThemeManagement.Blazor.csproj create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor.cs create mode 100644 modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Settings/AntDesignThemeManagementSettingContributor.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index 778c511..f014056 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,12 +1,12 @@ - 10.0.0 - 5.0.0 - 2.1.4 - 1.5.1 - 10.0.0 - 10.0.0 - 10.0.0 + 10.3.0 + 5.3.0 + 2.2.7 + 1.6.1 + 10.0.7 + 10.0.7 + 10.0.7 true @@ -134,30 +134,30 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -165,7 +165,7 @@ - + diff --git a/README.BlazorServer.md b/README.BlazorServer.md index c0449d7..24a3a78 100644 --- a/README.BlazorServer.md +++ b/README.BlazorServer.md @@ -1,70 +1,106 @@ -The first step is to use ABP CLI to create a new project. +## ABP Blazor Server - AntDesign Theme -`abp new BookStore -u blazor-server -t app` +Use this guide for an ABP `blazor-server` application. The matching working sample is `samples/WebAppBlazorServer`. -> See the [ABP official documentation](https://docs.abp.io) to learn [ABP framework](https://github.com/abpframework/abp). +![Advanced theme settings panel](img/theme-settings-panel.png) -**Replace LeptonXLiteTheme with AntBlazorTheme packages** - -* Replace `Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme` with `Lsw.Abp.AspnetCore.Components.Server.AntDesignTheme` -* Replace `Volo.Abp.Identity.Blazor.Server` with `Lsw.Abp.IdentityManagement.Blazor.Server.AntDesignUI` -* Replace `Volo.Abp.SettingManagement.Blazor.Server` with `Lsw.Abp.SettingManagement.Blazor.Server.AntDesignUI` -* Replace `Volo.Abp.TenantManagement.Blazor.Server` with `Lsw.Abp.TenantManagement.Blazor.Server.AntDesignUI` -* Replace `Volo.Abp.FeatureManagement.Blazor.Server` with `Lsw.Abp.FeatureManagement.Blazor.Server.AntDesignUI` +## 1. Create The App +```bash +abp new BookStore -u blazor-server -t app ``` -**Open `_Imports.razor` and add with the following:** +The paths below use the generated `BookStore` solution layout. -```csharp -@using AntDesign -@using Lsw.Abp.AntDesignUI -@using Lsw.Abp.AntDesignUI.Components -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Bundling -``` +## 2. Add References + +Add these references to `src/BookStore.Blazor/BookStore.Blazor.csproj`: -**Open `BookStoreBlazorModule` make the following changes:** +- `Lsw.Abp.AspnetCore.Components.Server.AntDesignTheme` +- `Lsw.Abp.IdentityManagement.Blazor.Server.AntDesignUI` +- `Lsw.Abp.TenantManagement.Blazor.Server.AntDesignUI` +- `Lsw.Abp.SettingManagement.Blazor.Server.AntDesignUI` +- `Lsw.Abp.FeatureManagement.Blazor.Server.AntDesignUI` +- `Lsw.Abp.AntDesignThemeManagement.Blazor.Server` -* Remove the `ConfigureBlazorise` method -* Fix wrong using namespace -* Update module dependencies - * For example, replace `AbpIdentityBlazorServerModule` with `AbpIdentityBlazorServerAntDesignModule` +Use `ProjectReference` inside this repository, or the same package names when consuming NuGet packages. -**Open `BookStoreMenuContributor` to update icon:** +Remove the old Blazorise-based Blazor packages from `BookStore.Blazor.csproj` if they exist: -* `"fas fa-home"` to `IconType.Outline.Home` -* `"fa fa-cog"` to `IconType.Outline.Setting` +- `Blazorise.Bootstrap5` +- `Blazorise.Icons.FontAwesome` +- `Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme` +- `Volo.Abp.Identity.Blazor.Server` +- `Volo.Abp.TenantManagement.Blazor.Server` +- `Volo.Abp.SettingManagement.Blazor.Server` +- `Volo.Abp.FeatureManagement.Blazor.Server` -**Remove all Blazorise packages.** +Do not remove `Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite` unless you also replace the MVC/account-page theme. -**Replace `BlazorLeptonXLiteThemeBundles` with `BlazorAntDesignThemeBundles`** +## 3. Update `BookStoreBlazorModule` -**Open `Index.razor` and replace with the following:** +Open `src/BookStore.Blazor/BookStoreBlazorModule.cs`. + +In the existing `[DependsOn]`, replace the generated Blazor UI module entries with these AntDesign entries: + +```csharp +typeof(AbpIdentityBlazorServerAntDesignModule), +typeof(AbpTenantManagementBlazorServerAntDesignModule), +typeof(AbpAspNetCoreComponentsServerAntDesignThemeModule), +typeof(AbpFeatureManagementBlazorServerAntDesignModule), +typeof(AbpAntDesignThemeManagementBlazorServerModule), +typeof(AbpSettingManagementBlazorServerAntDesignModule) +``` + +Configure the AntDesign bundle, router, and theme management API: ```csharp -@page "/" -@inherits BookStoreComponentBase +private void ConfigureBundles() +{ + Configure(options => + { + options.StyleBundles.Configure( + BlazorAntDesignThemeBundles.Styles.Global, + bundle => { bundle.AddFiles("/global-styles.css"); } + ); + }); +} + +private void ConfigureRouter(ServiceConfigurationContext context) +{ + Configure(options => + { + options.AppAssembly = typeof(BookStoreBlazorModule).Assembly; + }); +} + +private void ConfigureAutoApiControllers() +{ + Configure(options => + { + options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + options.ConventionalControllers.Create(typeof(AbpAntDesignThemeManagementApplicationModule).Assembly); + }); +} +``` - +Call these methods from `ConfigureServices`. Remove the old Blazorise provider setup if it exists. -
-
- - +## 4. Update Razor Files - +Add these imports to `src/BookStore.Blazor/_Imports.razor`: -
-
+```razor +@using AntDesign +@using Lsw.Abp.AntDesignUI +@using Lsw.Abp.AntDesignUI.Components +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Bundling ``` -**Open `Routes.razor` and replace with the following:** +Use the AntDesign layout in `src/BookStore.Blazor/Components/Routes.razor`: -```csharp +```razor @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Routing @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme @using Microsoft.Extensions.Options @@ -81,8 +117,34 @@ The first step is to use ABP CLI to create a new project. ``` -Run the `dotnet build` & `abp bundle` command in the `BookStore.Blazor` folder. +Use the AntDesign bundles in `src/BookStore.Blazor/Components/App.razor`: + +```razor +@using Lsw.Abp.AspnetCore.Components.Server.AntDesignTheme.Bundling + + + + + + +``` + +## 5. Build And Run + +From the solution root: + +```bash +dotnet build +``` + +To run this repository sample: + +```bash +cd samples/WebAppBlazorServer +dotnet run --project .\src\BookStore.DbMigrator\ +dotnet run --project .\src\BookStore.Blazor\ +``` -That's all, enjoy your code :). +Open `https://localhost:44322`. -![3](img/3.png) \ No newline at end of file +Log in with `admin` / `1q2w3E*`, then verify that the AntDesign layout and right-side theme settings panel are visible. diff --git a/README.BlazorWebAssembly.md b/README.BlazorWebAssembly.md index 3b63d66..576145a 100644 --- a/README.BlazorWebAssembly.md +++ b/README.BlazorWebAssembly.md @@ -1,70 +1,131 @@ -The first step is to use ABP CLI to create a new project. +## ABP Blazor WebAssembly - AntDesign Theme -`abp new BookStore -u blazor -t app` +Use this guide for an ABP `blazor` WebAssembly application. The matching working sample is `samples/WebAppBlazorWebAssembly`. -> See the [ABP official documentation](https://docs.abp.io) to learn [ABP framework](https://github.com/abpframework/abp). +![Advanced theme settings panel](img/theme-settings-panel.png) -**Replace LeptonXLiteTheme with AntBlazorTheme packages** +## 1. Create The App -* Replace `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme` with `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme` -* Replace `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme.Bundling` with `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling` -* Replace `Volo.Abp.Identity.Blazor.WebAssembly` with `Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI` -* Replace `Volo.Abp.SettingManagement.Blazor.WebAssembly` with `Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI` -* Replace `Volo.Abp.TenantManagement.Blazor.WebAssembly` with `Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI` -* Replace `Volo.Abp.FeatureManagement.Blazor.WebAssembly` with `Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI` +```bash +abp new BookStore -u blazor -t app +``` + +The paths below use the generated `BookStore` solution layout. + +## 2. Add References + +Add these references to `src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj`: + +- `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme` +- `Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly` + +Add this reference to `src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.csproj`: + +- `Lsw.Abp.AntDesignThemeManagement.Application` + +Add this reference to `src/BookStore.Blazor/BookStore.Blazor.csproj`: + +- `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling` + +Use `ProjectReference` inside this repository, or the same package names when consuming NuGet packages. + +Remove the old Blazorise-based Blazor packages from the same projects if they exist: +- `Blazorise.Bootstrap5` +- `Blazorise.Icons.FontAwesome` +- `Blazorise.Components` +- `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme` +- `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme.Bundling` +- `Volo.Abp.Identity.Blazor.WebAssembly` +- `Volo.Abp.TenantManagement.Blazor.WebAssembly` +- `Volo.Abp.SettingManagement.Blazor.WebAssembly` +- `Volo.Abp.FeatureManagement.Blazor.WebAssembly` + +Do not remove `Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite` from the HTTP API host unless you also replace the MVC/account-page theme. + +## 3. Update The WebAssembly Client + +Open `src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs`. + +In the existing `[DependsOn]`, use these AntDesign entries: + +```csharp +typeof(AbpIdentityBlazorWebAssemblyAntDesignModule), +typeof(AbpSettingManagementBlazorWebAssemblyAntDesignModule), +typeof(AbpFeatureManagementBlazorWebAssemblyAntDesignModule), +typeof(AbpTenantManagementBlazorWebAssemblyAntDesignModule), +typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeModule), +typeof(AbpAntDesignThemeManagementBlazorWebAssemblyModule) ``` -**Open `_Imports.razor` and add with the following:** +Configure the client router: ```csharp -@using AntDesign -@using Lsw.Abp.AntDesignUI -@using Lsw.Abp.AntDesignUI.Components -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Bundling +private void ConfigureRouter(ServiceConfigurationContext context) +{ + Configure(options => + { + options.AppAssembly = typeof(BookStoreBlazorClientModule).Assembly; + }); +} ``` -**Open `BookStoreBlazorClientModule` make the following changes:** +Remove the old Blazorise provider setup if it exists. -* Remove the `ConfigureBlazorise` method -* Fix wrong using namespace -* Update module dependencies - * For example, replace `AbpIdentityBlazorWebAssemblyModule` with `AbpIdentityBlazorWebAssemblyAntDesignModule` +## 4. Update The HTTP API Host -**Open `BookStoreMenuContributor` to update icon:** +Open `src/BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs`. -* `"fas fa-home"` to `IconType.Outline.Home` -* `"fa fa-cog"` to `IconType.Outline.Setting` +Add the theme management application module to `[DependsOn]`: -**Open `Index.razor` and replace with the following:** +```csharp +typeof(AbpAntDesignThemeManagementApplicationModule) +``` + +Expose the theme management application service: ```csharp -@page "/" -@inherits BookStoreComponentBase +private void ConfigureConventionalControllers() +{ + Configure(options => + { + options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + options.ConventionalControllers.Create(typeof(AbpAntDesignThemeManagementApplicationModule).Assembly); + }); +} +``` - +## 5. Update The Blazor Host -
-
- - +Open `src/BookStore.Blazor/BookStoreBlazorModule.cs`. - +Add the WebAssembly AntDesign bundling module to `[DependsOn]`: -
-
+```csharp +typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeBundlingModule) ``` -**Open `Routes.razor` and replace with the following:** +## 6. Update Razor Files -```csharp +Add these imports to `src/BookStore.Blazor.Client/_Imports.razor`: + +```razor +@using AntDesign +@using Lsw.Abp.AntDesignUI +@using Lsw.Abp.AntDesignUI.Components +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Bundling +``` + +Use the AntDesign layout in `src/BookStore.Blazor.Client/Routes.razor`: + +```razor @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Routing @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme -@using Microsoft.Extensions.Options @using Volo.Abp.AspNetCore.Components.WebAssembly.WebApp @@ -78,8 +139,23 @@ The first step is to use ABP CLI to create a new project. ``` -Run the `dotnet build` & `abp bundle` command in the `BookStore.Blazor` folder. +## 7. Build And Run + +From the solution root: + +```bash +dotnet build +``` + +To run this repository sample, start all three projects: + +```bash +cd samples/WebAppBlazorWebAssembly +dotnet run --project .\src\BookStore.DbMigrator\ +dotnet run --project .\src\BookStore.HttpApi.Host\ +dotnet run --project .\src\BookStore.Blazor\ +``` -That's all, enjoy your code :). +Open `https://localhost:44376`. -![3](img/3.png) \ No newline at end of file +Log in with `admin` / `1q2w3E*`, then verify that the AntDesign layout and right-side theme settings panel are visible. diff --git a/README.WebApp.md b/README.WebApp.md index 9795222..9e6bc6d 100644 --- a/README.WebApp.md +++ b/README.WebApp.md @@ -1,69 +1,162 @@ +## ABP Blazor WebApp - AntDesign Theme -The first step is to use ABP CLI to create a new project. +Use this guide for an ABP `blazor-webapp` application. The matching working sample is `samples/WebApp`. -`abp new BookStore -u blazor-webapp -t app` +![Advanced theme settings panel](img/theme-settings-panel.png) -> See the [ABP official documentation](https://docs.abp.io) to learn [ABP framework](https://github.com/abpframework/abp). +## 1. Create The App -**Replace LeptonXLiteTheme with AntBlazorTheme packages** +```bash +abp new BookStore -u blazor-webapp -t app +``` + +The paths below use the generated `BookStore` solution layout. + +## 2. Add References + +Add these references to `src/BookStore.Blazor/BookStore.Blazor.csproj`: + +- `Lsw.Abp.AspnetCore.Components.Server.AntDesignTheme` +- `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling` +- `Lsw.Abp.IdentityManagement.Blazor.Server.AntDesignUI` +- `Lsw.Abp.TenantManagement.Blazor.Server.AntDesignUI` +- `Lsw.Abp.AntDesignThemeManagement.Blazor.Server` -* Replace `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme` with `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme` -* Replace `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme.Bundling` with `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling` -* Replace `Volo.Abp.Identity.Blazor.WebAssembly` with `Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI` -* Replace `Volo.Abp.SettingManagement.Blazor.WebAssembly` with `Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI` -* Replace `Volo.Abp.TenantManagement.Blazor.WebAssembly` with `Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI` -* Replace `Volo.Abp.FeatureManagement.Blazor.WebAssembly` with `Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI` +Add these references to `src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj`: +- `Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme` +- `Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI` +- `Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly` -* Replace `Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme` with `Lsw.Abp.AspnetCore.Components.Server.AntDesignTheme` -* Replace `Volo.Abp.Identity.Blazor.Server` with `Lsw.Abp.IdentityManagement.Blazor.Server.AntDesignUI` -* Replace `Volo.Abp.SettingManagement.Blazor.Server` with `Lsw.Abp.SettingManagement.Blazor.Server.AntDesignUI` -* Replace `Volo.Abp.TenantManagement.Blazor.Server` with `Lsw.Abp.TenantManagement.Blazor.Server.AntDesignUI` -* Replace `Volo.Abp.FeatureManagement.Blazor.Server` with `Lsw.Abp.FeatureManagement.Blazor.Server.AntDesignUI` +Use `ProjectReference` inside this repository, or the same package names when consuming NuGet packages. -**Remove all Blazorise packages.** +Remove the old Blazorise-based Blazor packages from the same projects if they exist: -**Replace `BlazorLeptonXLiteThemeBundles` with `BlazorAntDesignThemeBundles`** +- `Blazorise.Bootstrap5` +- `Blazorise.Icons.FontAwesome` +- `Blazorise.Components` +- `Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme` +- `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme` +- `Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme.Bundling` +- `Volo.Abp.Identity.Blazor.Server` +- `Volo.Abp.Identity.Blazor.WebAssembly` +- `Volo.Abp.TenantManagement.Blazor.Server` +- `Volo.Abp.TenantManagement.Blazor.WebAssembly` +- `Volo.Abp.SettingManagement.Blazor.Server` +- `Volo.Abp.SettingManagement.Blazor.WebAssembly` +- `Volo.Abp.FeatureManagement.Blazor.Server` +- `Volo.Abp.FeatureManagement.Blazor.WebAssembly` -**Open `_Imports.razor` and add with the following:** +Do not remove `Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite` unless you also replace the MVC/account-page theme. + +## 3. Update The WebApp Host Module + +Open `src/BookStore.Blazor/BookStoreBlazorModule.cs`. + +In the existing `[DependsOn]`, replace the generated Blazor UI module entries with these AntDesign entries: ```csharp -@using AntDesign -@using Lsw.Abp.AntDesignUI -@using Lsw.Abp.AntDesignUI.Components -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Bundling +typeof(AbpIdentityBlazorServerAntDesignModule), +typeof(AbpTenantManagementBlazorServerAntDesignModule), +typeof(AbpAntDesignThemeManagementBlazorServerModule), +typeof(AbpAspNetCoreComponentsServerAntDesignThemeModule), +typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeBundlingModule) ``` -**Open `BookStoreBlazorModule` make the following changes:** +Configure the AntDesign bundle, router, and theme management API: + +```csharp +private void ConfigureBundles() +{ + Configure(options => + { + options.Parameters.InteractiveAuto = true; + + options.StyleBundles.Configure( + BlazorAntDesignThemeBundles.Styles.Global, + bundle => { bundle.AddFiles("/global-styles.css"); } + ); + }); +} + +private void ConfigureRouter(ServiceConfigurationContext context) +{ + Configure(options => + { + options.AppAssembly = typeof(BookStoreBlazorModule).Assembly; + options.AdditionalAssemblies.Add(typeof(BookStoreBlazorClientModule).Assembly); + }); +} + +private void ConfigureAutoApiControllers() +{ + Configure(options => + { + options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + options.ConventionalControllers.Create(typeof(AbpAntDesignThemeManagementApplicationModule).Assembly); + }); +} +``` -* Remove the `ConfigureBlazorise` method -* Fix wrong using namespace -* Update module dependencies - * For example: replace `AbpIdentityBlazorServerModule` with `AbpIdentityBlazorServerAntDesignModule` - * For example: replace `AbpAspNetCoreComponentsServerLeptonXLiteThemeModule` with `AbpAspNetCoreComponentsServerAntDesignThemeModule` +Call these methods from `ConfigureServices`. Remove the old Blazorise provider setup if it exists. -**Open `BookStoreBlazorClientModule` make the following changes:** +## 4. Update The WebAssembly Client Module -* Remove the `ConfigureBlazorise` method -* Fix wrong using namespace -* Update module dependencies - * For example: replace `AbpIdentityBlazorWebAssemblyModule` with `AbpIdentityBlazorWebAssemblyAntDesignModule` - * For example: replace `AbpAspNetCoreComponentsWebAssemblyLeptonXLiteThemeModule` with `AbpAspNetCoreComponentsWebAssemblyAntDesignThemeModule` +Open `src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs`. -**Open `BookStoreMenuContributor` to update icon:** +In the existing `[DependsOn]`, use these AntDesign entries: -* `"fas fa-home"` to `IconType.Outline.Home` -* `"fa fa-cog"` to `IconType.Outline.Setting` +```csharp +typeof(AbpSettingManagementBlazorWebAssemblyAntDesignModule), +typeof(AbpFeatureManagementBlazorWebAssemblyAntDesignModule), +typeof(AbpIdentityBlazorWebAssemblyAntDesignModule), +typeof(AbpTenantManagementBlazorWebAssemblyAntDesignModule), +typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeModule), +typeof(AbpAntDesignThemeManagementBlazorWebAssemblyModule) +``` -**Open `Routes.razor` and replace with the following:** +Configure the client router: ```csharp +private void ConfigureRouter(ServiceConfigurationContext context) +{ + Configure(options => + { + options.AppAssembly = typeof(BookStoreBlazorClientModule).Assembly; + options.AdditionalAssemblies.Add(typeof(BookStoreBlazorClientModule).Assembly); + }); +} +``` + +Remove the old Blazorise provider setup if it exists. + +## 5. Update Razor Files + +Add these imports to both `_Imports.razor` files: + +- `src/BookStore.Blazor/_Imports.razor` +- `src/BookStore.Blazor.Client/_Imports.razor` + +```razor +@using AntDesign +@using Lsw.Abp.AntDesignUI +@using Lsw.Abp.AntDesignUI.Components +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Bundling +``` + +Use the AntDesign layout in `src/BookStore.Blazor.Client/Routes.razor`: + +```razor @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Routing @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme @using Microsoft.Extensions.Options @inject IOptions RouterOptions + @@ -75,30 +168,38 @@ The first step is to use ABP CLI to create a new project. ``` -**Open `Index.razor` and replace with the following:** +Use the AntDesign bundles in `src/BookStore.Blazor/Components/App.razor`: -```csharp -@page "/" -@inherits BookStoreComponentBase +```razor +@using Lsw.Abp.AspnetCore.Components.Server.AntDesignTheme.Bundling + + - + -
-
+ +``` - +## 6. Build And Run - +From the solution root: -
-
+```bash +dotnet build ``` -Run the `dotnet build` & `abp bundle` command in the `BookStore.Blazor.Client` folder. +To run this repository sample: + +```bash +cd samples/WebApp +dotnet run --project .\src\BookStore.DbMigrator\ +dotnet run --project .\src\BookStore.Blazor\ +``` -That's all, enjoy your code :). +Open `https://localhost:44320`. -![3](img/3.png) \ No newline at end of file +Log in with `admin` / `1q2w3E*`, then verify that the AntDesign layout and right-side theme settings panel are visible. diff --git a/README.md b/README.md index 657bba9..7e7cf7d 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,55 @@ # Lsw.Abp.AntDesignUI -**An Abp Blazor Theme based [Ant-Design-Blazor](https://github.com/ant-design-blazor/ant-design-blazor) !** +ABP Blazor UI theme and module set based on [Ant Design Blazor](https://github.com/ant-design-blazor/ant-design-blazor). [![NuGet](https://img.shields.io/nuget/v/Lsw.Abp.AntDesignUI.svg)](https://www.nuget.org/packages/Lsw.Abp.AntDesignUI/) [![NuGet](https://img.shields.io/nuget/dt/Lsw.Abp.AntDesignUI.svg)](https://www.nuget.org/packages/Lsw.Abp.AntDesignUI/) -## Samples +## Features + +Lsw.Abp.AntDesignUI provides an Ant Design Pro-style application shell for ABP Blazor applications. + +- Refactored application layout with side and top navigation. +- Responsive sidebar behavior for desktop and mobile screens. +- Light, menu-dark, and real-dark visual styles. +- Runtime controls for content width, fixed header, fixed sidebar, split menus, and page regions. +- Floating theme settings panel for authenticated users. +- Admin-managed theme setting availability through ABP Setting Management. +- AntDesign UI implementations for common ABP management modules. + +## Theme Settings + +Authenticated users can open the settings panel from the right side of the application and change the layout without restarting the app. + +The panel includes: -* [Blazor WebApp(Auto mode) sample](/samples/WebApp/) -* [Blazor WebApp(Server mode) sample](/samples/WebAppBlazorServer/) -* [Blazor WebApp(WebAssembly mode) sample](/samples/WebAppBlazorWebAssembly/) +- Page style selection. +- Navigation mode selection. +- Content width and fixed layout switches. +- Header, footer, menu, and menu header visibility. +- Weak color mode. + +Administrators can choose which groups are visible from `Administration -> Settings -> Theme settings management`. + +## Screenshots + +![AntDesign theme home page](img/theme-home.png) + +![Advanced theme settings panel](img/theme-settings-panel.png) + +## Samples -![1](img/1.png) -![2](img/2.png) +- [WebApp (Auto mode)](./samples/WebApp/) +- [WebApp Blazor Server](./samples/WebAppBlazorServer/) +- [WebApp Blazor WebAssembly](./samples/WebAppBlazorWebAssembly/) -## Quick Start +Sample login: -* [Change the theme of the ABP project to AntBlazorTheme for Blazor WebApp.](./README.WebApp.md) -* [Change the theme of the ABP project to AntBlazorTheme for Blazor Server.](./README.BlazorServer.md) -* [Change the theme of the ABP project to AntBlazorTheme for Blazor WebAssembly.](./README.BlazorWebAssembly.md) +- Username: `admin` +- Password: `1q2w3E*` -## Road map +## Usage Guides -Updating... +- [Use AntDesign theme in ABP Blazor WebApp](./README.WebApp.md) +- [Use AntDesign theme in ABP Blazor Server](./README.BlazorServer.md) +- [Use AntDesign theme in ABP Blazor WebAssembly](./README.BlazorWebAssembly.md) diff --git a/img/theme-home.png b/img/theme-home.png new file mode 100644 index 0000000000000000000000000000000000000000..0edfd814c3ab31c93e88af22e54da36646b3239d GIT binary patch literal 22266 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 literal 0 HcmV?d00001 diff --git a/img/theme-settings-panel.png b/img/theme-settings-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..c50fccbdcef7e7f343af4851d1d62d2e8fa23ba6 GIT binary patch literal 53869 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 - @_currentLanguage.DisplayName + @_currentLanguage.DisplayName diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/AbpAspNetCoreComponentsWebAntDesignThemeModule.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/AbpAspNetCoreComponentsWebAntDesignThemeModule.cs index ce90bd8..b9e874c 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/AbpAspNetCoreComponentsWebAntDesignThemeModule.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/AbpAspNetCoreComponentsWebAntDesignThemeModule.cs @@ -1,4 +1,5 @@ -using Lsw.Abp.AntDesignUI; +using Lsw.Abp.AntDesignThemeManagement; +using Lsw.Abp.AntDesignUI; using Volo.Abp.AspNetCore.Components.Web.Security; using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; @@ -7,6 +8,7 @@ namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme; [DependsOn( typeof(AbpAntDesignUIModule), + typeof(AbpAntDesignThemeManagementApplicationContractsModule), typeof(AbpUiNavigationModule) )] public class AbpAspNetCoreComponentsWebAntDesignThemeModule : AbpModule diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Layout/AbpPageHeader.razor b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Layout/AbpPageHeader.razor index 73c3d15..9f58d6e 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Layout/AbpPageHeader.razor +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Layout/AbpPageHeader.razor @@ -2,7 +2,7 @@ @inject IOptions Options - + @if (Options.Value.RenderBreadcrumbs && BreadcrumbItems.Any()) { @@ -26,17 +26,17 @@ - + @if (Options.Value.RenderToolbar) { - + @if (Toolbar == null) { @ChildContent } @foreach (var toolbarItemRender in ToolbarItemRenders) { -
+
@toolbarItemRender
} diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.csproj b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.csproj index 4bb3a75..30506eb 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.csproj +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.csproj @@ -14,6 +14,7 @@ + diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/AntDesignSettingsProvider.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/AntDesignSettingsProvider.cs index 2fcca29..0c470b7 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/AntDesignSettingsProvider.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/AntDesignSettingsProvider.cs @@ -1,40 +1,96 @@ -using System; -using System.Security.AccessControl; +using System; using System.Threading.Tasks; using AntDesign; -using AntDesign.Core.Helpers.MemberPath; -using Microsoft.AspNetCore.Components; -using Microsoft.Extensions.Options; +using Lsw.Abp.AntDesignThemeManagement; +using Lsw.Abp.AntDesignThemeManagement.Dtos; +using Lsw.Abp.AntDesignThemeManagement.Settings; using Volo.Abp.DependencyInjection; -using Volo.Abp.Settings; +using Volo.Abp.Users; namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings; public class AntDesignSettingsProvider : IAntDesignSettingsProvider, IScopedDependency { - //TODO use SettingProvider instead of AbpAntDesignThemeOptions - // [Inject] - // protected ISettingProvider SettingProvider { get; set; } - - [Inject] - public IOptions Options { get; set; } - - public delegate Task AntDesignSettingChangedHandler(); - - public event AntDesignSettingChangedHandler SettingChanged; - - public Task GetMenuPlacementAsync() + protected IAntDesignThemePreferenceAppService ThemePreferenceAppService { get; } + + protected ICurrentUser CurrentUser { get; } + + public AntDesignSettingsProvider( + IAntDesignThemePreferenceAppService themePreferenceAppService, + ICurrentUser currentUser) + { + ThemePreferenceAppService = themePreferenceAppService; + CurrentUser = currentUser; + } + + public event Func? SettingChanged; + + public async Task GetPreferenceAsync() + { + if (!CurrentUser.IsAuthenticated) + { + return BuildDefaultPreference(); + } + + try + { + return await ThemePreferenceAppService.GetAsync(); + } + catch + { + return BuildDefaultPreference(); + } + } + + public async Task GetMenuPlacementAsync() + { + var setting = await GetPreferenceAsync(); + + return setting.NavigationMode == NavigationModes.Top + ? MenuPlacement.Top + : MenuPlacement.Left; + } + + public async Task GetMenuThemeAsync() + { + var setting = await GetPreferenceAsync(); + + return setting.ThemeStyle == ThemeStyles.Light + ? MenuTheme.Light + : MenuTheme.Dark; + } + + public async Task ApplyPreferenceAsync(UpdateAntDesignThemePreferenceDto input) { - return Task.FromResult(Options.Value.Menu.Placement); + await ThemePreferenceAppService.UpdateAsync(input); + await TriggerSettingChangedAsync(); } - public Task GetMenuThemeAsync() + public Task TriggerSettingChangedAsync() { - return Task.FromResult(Options.Value.Menu.Theme); + return SettingChanged?.Invoke() ?? Task.CompletedTask; } - public Task TriggerSettingChanged() + protected virtual AntDesignThemePreferenceDto BuildDefaultPreference() { - return SettingChanged?.Invoke(); + return new AntDesignThemePreferenceDto + { + ThemeSettingsEnabled = AntDesignThemeSettingDefaults.EnableThemeSettings, + PageStyleSettingEnabled = AntDesignThemeSettingDefaults.EnablePageStyleSetting, + NavigationModeSettingEnabled = AntDesignThemeSettingDefaults.EnableNavigationModeSetting, + RegionalSettingsEnabled = AntDesignThemeSettingDefaults.EnableRegionalSettings, + OtherSettingsEnabled = AntDesignThemeSettingDefaults.EnableOtherSettings, + ThemeStyle = AntDesignThemeSettingDefaults.ThemeStyle, + NavigationMode = AntDesignThemeSettingDefaults.NavigationMode, + ContentWidth = AntDesignThemeSettingDefaults.ContentWidth, + FixedHeader = AntDesignThemeSettingDefaults.FixedHeader, + FixSiderbar = AntDesignThemeSettingDefaults.FixSiderbar, + SplitMenus = AntDesignThemeSettingDefaults.SplitMenus, + ShowHeader = AntDesignThemeSettingDefaults.ShowHeader, + ShowFooter = AntDesignThemeSettingDefaults.ShowFooter, + ShowMenu = AntDesignThemeSettingDefaults.ShowMenu, + ShowMenuHeader = AntDesignThemeSettingDefaults.ShowMenuHeader, + ColorWeak = AntDesignThemeSettingDefaults.ColorWeak + }; } } diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/IAntDesignSettingsProvider.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/IAntDesignSettingsProvider.cs index 580c713..dfd3663 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/IAntDesignSettingsProvider.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Settings/IAntDesignSettingsProvider.cs @@ -1,16 +1,21 @@ -using System; +using System; using System.Threading.Tasks; using AntDesign; +using Lsw.Abp.AntDesignThemeManagement.Dtos; namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings; public interface IAntDesignSettingsProvider { + Task GetPreferenceAsync(); + Task GetMenuPlacementAsync(); Task GetMenuThemeAsync(); - Task TriggerSettingChanged(); - - public event AntDesignSettingsProvider.AntDesignSettingChangedHandler SettingChanged; + Task ApplyPreferenceAsync(UpdateAntDesignThemePreferenceDto input); + + Task TriggerSettingChangedAsync(); + + event Func? SettingChanged; } diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor index 9a1e0d5..de396af 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor @@ -1,4 +1,4 @@ -@inherits LayoutComponentBase +@inherits LayoutComponentBase @using Microsoft.Extensions.Options @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Components @@ -7,79 +7,123 @@ @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Components.LayoutHooks @inject IOptions Options - -@if (Options.Value.Menu.Placement == MenuPlacement.Top) +@if (IsTopNavigation) { - -
- - - - - -
+ + @if (ShowHeader) + { +
+ @if (ShowMenuHeader) + { + + } + @if (ShowMenu) + { + + } + + + +
+ } + - +
- - @Body - +
+ + @Body + +
- +
-
+ + @if (ShowFooter) + { +
+ }
} else { - - - - - + + @if (ShowMenu) + { + + @if (ShowMenuHeader) + { + + } + + + + @if (IsMobile && !Collapsed) + { +
+ } + } + -
-
- @if (Collapsed) - { - - } - else + @if (ShowHeader) + { +
+ @if (ShowMenu) { - +
+ @if (Collapsed) + { + + } + else + { + + } +
} -
- - - - -
+ + + + + } + - +
- - @if (!Options.Value.EnableMultipleTabs) - { - @Body - } - else - { - - } - +
+ + @if (!Options.Value.EnableMultipleTabs) + { + @Body + } + else + { + + } + +
- +
-
+ + @if (ShowFooter) + { +
+ }
} + + diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor.cs index ad78f22..6c8c519 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/DefaultLayout.razor.cs @@ -1,14 +1,23 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using AntDesign; +using Lsw.Abp.AntDesignThemeManagement.Dtos; +using Lsw.Abp.AntDesignThemeManagement.Settings; using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings; using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme; -public partial class DefaultLayout +public partial class DefaultLayout : IDisposable { + protected const int MobileCollapsedSiderWidth = 64; + + [Inject] + protected IAntDesignSettingsProvider AntDesignSettingsProvider { get; set; } = default!; + [Inject] - protected IAntDesignSettingsProvider AntDesignSettingsProvider { get; set; } + protected IJSRuntime JsRuntime { get; set; } = default!; protected bool Collapsed { get; set; } @@ -16,37 +25,176 @@ public partial class DefaultLayout protected MenuTheme MenuTheme { get; set; } - protected string HeaderClass { get; set; } + protected AntDesignThemePreferenceDto Preference { get; set; } = new(); + + protected string HeaderClass { get; set; } = string.Empty; protected SiderTheme SiderTheme { get; set; } - protected string SiderStyle { get; set; } = "min-width:256px"; + protected string SiderStyle { get; set; } = "min-width:256px;max-width:256px;width:256px;"; + + protected string SiderClass => IsMobile ? "ant-design-side lsw-pro-side-mobile" : "ant-design-side"; + + protected string LayoutClass { get; set; } = "ant-design-layout lsw-pro-theme lsw-pro-theme-light"; + + protected string ThemeBodyClass { get; set; } = "lsw-pro-theme lsw-pro-theme-light"; + + protected bool IsMobile { get; set; } + + protected bool IsTopNavigation => MenuPlacement == MenuPlacement.Top; + + protected bool ShowHeader => Preference.ShowHeader; + + protected bool ShowFooter => Preference.ShowFooter; + + protected bool ShowMenu => Preference.ShowMenu; + + protected bool ShowMenuHeader => Preference.ShowMenu && Preference.ShowMenuHeader; + + protected bool IsFixedContentWidth => Preference.ContentWidth == ContentWidths.Fixed; protected override async Task OnInitializedAsync() { - await SetLayout(); - AntDesignSettingsProvider.SettingChanged += OnSettingChanged; + await SetLayoutAsync(); + AntDesignSettingsProvider.SettingChanged += OnSettingChangedAsync; } - protected virtual async Task OnSettingChanged() + protected virtual async Task OnSettingChangedAsync() { - await SetLayout(); + await SetLayoutAsync(); await InvokeAsync(StateHasChanged); } - private async Task SetLayout() + protected override async Task OnAfterRenderAsync(bool firstRender) { - MenuTheme = await AntDesignSettingsProvider.GetMenuThemeAsync(); - MenuPlacement = await AntDesignSettingsProvider.GetMenuPlacementAsync(); + try + { + await JsRuntime.InvokeVoidAsync("lswAntDesignThemeSettings.applyThemeClass", ThemeBodyClass); + } + catch + { + // Ignore transient script loading errors. + } + } + + protected virtual async Task SetLayoutAsync() + { + Preference = await AntDesignSettingsProvider.GetPreferenceAsync(); + + MenuPlacement = Preference.NavigationMode == NavigationModes.Top + ? MenuPlacement.Top + : MenuPlacement.Left; + + MenuTheme = Preference.ThemeStyle == ThemeStyles.Light + ? MenuTheme.Light + : MenuTheme.Dark; + + SiderTheme = MenuTheme == MenuTheme.Light ? SiderTheme.Light : SiderTheme.Dark; + + var headerBaseClass = IsTopNavigation ? "ant-design-header-top" : "ant-design-header-left"; + var headerModeClass = MenuTheme == MenuTheme.Light ? $"{headerBaseClass}-light" : $"{headerBaseClass}-dark"; + var fixedClass = Preference.FixedHeader ? "ant-design-header-fixed" : string.Empty; + HeaderClass = $"{headerBaseClass} {headerModeClass} {fixedClass}".Trim(); - SiderTheme = MenuTheme == MenuTheme.Light ? SiderTheme.Light : SiderTheme.Dark; - HeaderClass = MenuPlacement == MenuPlacement.Top ? "ant-design-header-top" : "ant-design-header-left"; - HeaderClass = MenuTheme == MenuTheme.Light ? $"{HeaderClass} {HeaderClass}-light" : HeaderClass; + LayoutClass = BuildLayoutClass(); + ThemeBodyClass = BuildThemeBodyClass(); + SiderStyle = BuildSiderStyle(); } protected virtual void OnCollapse() { Collapsed = !Collapsed; - SiderStyle = Collapsed ? "" : "min-width:256px"; + SiderStyle = BuildSiderStyle(); + } + + protected virtual Task OnSiderBreakpointChanged(bool broken) + { + IsMobile = broken; + + if (broken) + { + Collapsed = true; + } + else if (Collapsed) + { + Collapsed = false; + } + + SiderStyle = BuildSiderStyle(); + return InvokeAsync(StateHasChanged); + } + + protected virtual void CloseMobileMenu() + { + if (!IsMobile) + { + return; + } + + Collapsed = true; + SiderStyle = BuildSiderStyle(); + } + + protected virtual Task OnMainMenuItemClickAsync() + { + if (IsMobile && !Collapsed) + { + Collapsed = true; + SiderStyle = BuildSiderStyle(); + return InvokeAsync(StateHasChanged); + } + + return Task.CompletedTask; + } + + protected virtual string BuildLayoutClass() + { + var themeClass = GetThemeClass(); + var weakClass = Preference.ColorWeak ? "colorWeak" : string.Empty; + var fixedContentClass = IsFixedContentWidth ? "lsw-pro-content-fixed" : "lsw-pro-content-fluid"; + var navModeClass = IsTopNavigation ? "lsw-pro-nav-top" : "lsw-pro-nav-side"; + + return $"ant-design-layout lsw-pro-theme {themeClass} {weakClass} {fixedContentClass} {navModeClass}".Trim(); + } + + protected virtual string BuildThemeBodyClass() + { + var themeClass = GetThemeClass(); + var weakClass = Preference.ColorWeak ? "colorWeak" : string.Empty; + + return $"lsw-pro-theme {themeClass} {weakClass}".Trim(); + } + + protected virtual string GetThemeClass() + { + return Preference.ThemeStyle switch + { + ThemeStyles.Dark => "lsw-pro-theme-dark", + ThemeStyles.RealDark => "lsw-pro-theme-real-dark", + _ => "lsw-pro-theme-light" + }; + } + + protected virtual string BuildSiderStyle() + { + var width = Collapsed + ? (IsMobile ? MobileCollapsedSiderWidth : 80) + : 256; + + var mobileSiderStyle = IsMobile + ? "position:fixed;left:0;top:0;height:100vh;overflow:auto;z-index:1310;" + : string.Empty; + + var fixedSiderStyle = Preference.FixSiderbar + && !IsMobile + ? "position:sticky;top:0;height:100vh;overflow:auto;" + : string.Empty; + + return $"min-width:{width}px;max-width:{width}px;width:{width}px;{mobileSiderStyle}{fixedSiderStyle}"; + } + + public void Dispose() + { + AntDesignSettingsProvider.SettingChanged -= OnSettingChangedAsync; } } diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor index c5f7353..9f853c4 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor @@ -1,10 +1,16 @@ -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings - +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings +@inherits Volo.Abp.AspNetCore.Components.AbpComponentBase + @if (Menu != null) { foreach (var menu in Menu.Items) { - + } } diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor.cs index e1d8ee1..7e6c301 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenu.razor.cs @@ -1,38 +1,55 @@ -using System; +using System; using System.Threading.Tasks; using AntDesign; using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings; using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Authorization; -using Microsoft.Extensions.Options; +using Volo.Abp.AspNetCore.Components; using Volo.Abp.AspNetCore.Components.Web.Security; using Volo.Abp.UI.Navigation; namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme; -public partial class MainMenu : IDisposable +public partial class MainMenu : AbpComponentBase, IDisposable { - protected ApplicationMenu Menu { get; set; } - + protected ApplicationMenu Menu { get; set; } = default!; + [Inject] - protected IMenuManager MenuManager { get; set; } - + protected IMenuManager MenuManager { get; set; } = default!; + [Inject] - protected ApplicationConfigurationChangedService ApplicationConfigurationChangedService { get; set; } - + protected ApplicationConfigurationChangedService ApplicationConfigurationChangedService { get; set; } = default!; + [Parameter] public MenuPlacement Placement { get; set; } - + [Parameter] public MenuTheme Theme { get; set; } - + [Parameter] public bool Collapsed { get; set; } + [Parameter] + public EventCallback OnMenuItemClick { get; set; } + + protected string MenuRenderKey { get; set; } = $"lsw-main-menu-{Guid.NewGuid():N}"; + + protected MenuMode MenuMode => Placement == MenuPlacement.Left ? MenuMode.Inline : MenuMode.Horizontal; + + protected bool InlineCollapsedValue => Placement == MenuPlacement.Left && Collapsed; + + protected Trigger TriggerSubMenuAction => Placement == MenuPlacement.Top ? Trigger.Click : Trigger.Hover; + protected override async Task OnInitializedAsync() { - await GetMenuAsync(); - ApplicationConfigurationChangedService.Changed += ApplicationConfigurationChanged; + try + { + await GetMenuAsync(); + ApplicationConfigurationChangedService.Changed += ApplicationConfigurationChanged; + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } } private async Task GetMenuAsync() @@ -42,8 +59,29 @@ public partial class MainMenu : IDisposable private async void ApplicationConfigurationChanged() { - await GetMenuAsync(); - await InvokeAsync(StateHasChanged); + try + { + await GetMenuAsync(); + await InvokeAsync(StateHasChanged); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + + protected virtual async Task OnMenuItemClickedAsync() + { + if (Placement == MenuPlacement.Top) + { + // Force-close any opened top-mode dropdowns once an item is clicked. + MenuRenderKey = $"lsw-main-menu-{Guid.NewGuid():N}"; + } + + if (OnMenuItemClick.HasDelegate) + { + await OnMenuItemClick.InvokeAsync(); + } } public void Dispose() diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor index a5d9ce5..ae1aa48 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor @@ -1,4 +1,4 @@ -@using Volo.Abp.UI.Navigation +@using Volo.Abp.UI.Navigation @if (Menu != null) { @@ -7,7 +7,10 @@ if (Menu.IsLeaf && Menu.Url != null) { - + @if (!Menu.Icon.IsNullOrWhiteSpace()) { @@ -20,14 +23,13 @@ @foreach (var menuItem in Menu.Items) { - + } } } @{ - RenderFragment GetSubMenuTemplate(ApplicationMenuItem menu) { return @ diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor.cs index be0d509..febe0e0 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/MainMenuItem.razor.cs @@ -1,4 +1,5 @@ -using AntDesign; +using System.Threading.Tasks; +using AntDesign; using Microsoft.AspNetCore.Components; using Volo.Abp.UI.Navigation; @@ -7,5 +8,15 @@ namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme public partial class MainMenuItem : ComponentBase { [Parameter] - public ApplicationMenuItem Menu { get; set; } + public ApplicationMenuItem Menu { get; set; } = default!; + + [Parameter] + public EventCallback OnItemClick { get; set; } + + protected virtual Task OnClickAsync() + { + return OnItemClick.HasDelegate + ? OnItemClick.InvokeAsync() + : Task.CompletedTask; + } } diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor index ffabc44..8b55534 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor @@ -1,4 +1,5 @@ -@foreach (var render in ToolbarItemRenders) +@inherits Volo.Abp.AspNetCore.Components.AbpComponentBase +@foreach (var render in ToolbarItemRenders) { @render } diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor.cs index 7c99191..58a943a 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/NavToolbar.razor.cs @@ -3,11 +3,12 @@ using System.Collections.Generic; using System.Threading.Tasks; using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Toolbars; using Microsoft.AspNetCore.Components; +using Volo.Abp.AspNetCore.Components; using Volo.Abp.AspNetCore.Components.Web.Security; namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme; -public partial class NavToolbar : IDisposable +public partial class NavToolbar : AbpComponentBase, IDisposable { [Inject] private IToolbarManager ToolbarManager { get; set; } @@ -19,8 +20,15 @@ public partial class NavToolbar : IDisposable protected override async Task OnInitializedAsync() { - await GetToolbarItemRendersAsync(); - ApplicationConfigurationChangedService.Changed += ApplicationConfigurationChanged; + try + { + await GetToolbarItemRendersAsync(); + ApplicationConfigurationChangedService.Changed += ApplicationConfigurationChanged; + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } } private async Task GetToolbarItemRendersAsync() @@ -42,8 +50,15 @@ public partial class NavToolbar : IDisposable private async void ApplicationConfigurationChanged() { - await GetToolbarItemRendersAsync(); - await InvokeAsync(StateHasChanged); + try + { + await GetToolbarItemRendersAsync(); + await InvokeAsync(StateHasChanged); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } } public void Dispose() diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor new file mode 100644 index 0000000..31fbe22 --- /dev/null +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor @@ -0,0 +1,147 @@ +@using Lsw.Abp.AntDesignThemeManagement.Settings +@inherits Volo.Abp.AspNetCore.Components.AbpComponentBase +@if (IsVisible) +{ +
+ +
+ +
+ + +} diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor.cs new file mode 100644 index 0000000..d005909 --- /dev/null +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/Themes/AntDesignTheme/ThemeSettingPanel.razor.cs @@ -0,0 +1,281 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Lsw.Abp.AntDesignThemeManagement.Dtos; +using Lsw.Abp.AntDesignThemeManagement.Localization; +using Lsw.Abp.AntDesignThemeManagement.Settings; +using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.Extensions.Localization; +using Microsoft.JSInterop; +using Volo.Abp.Users; + +namespace Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme; + +public partial class ThemeSettingPanel : IAsyncDisposable +{ + [Inject] + protected IStringLocalizer ThemeL { get; set; } = default!; + + [Inject] + protected IAntDesignSettingsProvider AntDesignSettingsProvider { get; set; } = default!; + + [Inject] + protected IJSRuntime JsRuntime { get; set; } = default!; + + protected bool PanelVisible { get; set; } + + protected bool IsVisible { get; set; } + + protected AntDesignThemePreferenceDto Preference { get; set; } = new(); + + protected string HostId { get; } = $"lsw-theme-settings-fab-{Guid.NewGuid():N}"; + + protected string FloatingButtonClass => + $"lsw-theme-setting-fab {(PanelVisible ? "lsw-theme-setting-fab-active" : string.Empty)}".Trim(); + + private bool _isSubscribedToSettingChanged; + private bool _jsInitialized; + + protected IReadOnlyList ThemeStyleOptions { get; } = new[] + { + new OptionItem(ThemeStyles.Light, "Light", "lsw-theme-preview-light"), + new OptionItem(ThemeStyles.Dark, "Dark", "lsw-theme-preview-dark"), + new OptionItem(ThemeStyles.RealDark, "RealDark", "lsw-theme-preview-real-dark") + }; + + protected IReadOnlyList NavigationOptions { get; } = new[] + { + new OptionItem(NavigationModes.Side, "Side", "lsw-theme-preview-nav-side"), + new OptionItem(NavigationModes.Top, "Top", "lsw-theme-preview-nav-top") + }; + + protected override async Task OnInitializedAsync() + { + try + { + if (!CurrentUser.IsAuthenticated) + { + IsVisible = false; + return; + } + + AntDesignSettingsProvider.SettingChanged += OnSettingChangedAsync; + _isSubscribedToSettingChanged = true; + + Preference = await AntDesignSettingsProvider.GetPreferenceAsync(); + IsVisible = Preference.ThemeSettingsEnabled; + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + IsVisible = false; + } + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (!IsVisible || _jsInitialized) + { + return; + } + + try + { + await JsRuntime.InvokeVoidAsync("lswAntDesignThemeSettings.initialize", HostId); + _jsInitialized = true; + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + + protected virtual Task TogglePanel() + { + PanelVisible = !PanelVisible; + return Task.CompletedTask; + } + + protected virtual Task OnFabKeyDownAsync(KeyboardEventArgs args) + { + if (args.Key is "Enter" or " ") + { + return TogglePanel(); + } + + return Task.CompletedTask; + } + + protected virtual Task ClosePanel() + { + PanelVisible = false; + return Task.CompletedTask; + } + + protected virtual async Task SetThemeStyleAsync(string style) + { + Preference.ThemeStyle = style; + await SaveAsync(); + } + + protected virtual async Task SetNavigationModeAsync(string mode) + { + var previousMode = Preference.NavigationMode; + Preference.NavigationMode = mode; + await SaveAsync(); + + if (Preference.NavigationMode != mode) + { + Preference.NavigationMode = previousMode; + } + } + + protected virtual async Task OnContentWidthChangedAsync(ChangeEventArgs args) + { + Preference.ContentWidth = args.Value?.ToString() ?? ContentWidths.Fluid; + await SaveAsync(); + } + + protected virtual async Task OnFixedHeaderChangedAsync(ChangeEventArgs args) + { + Preference.FixedHeader = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual async Task OnFixedSiderbarChangedAsync(ChangeEventArgs args) + { + Preference.FixSiderbar = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual async Task OnSplitMenusChangedAsync(ChangeEventArgs args) + { + Preference.SplitMenus = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual async Task OnShowHeaderChangedAsync(ChangeEventArgs args) + { + Preference.ShowHeader = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual async Task OnShowFooterChangedAsync(ChangeEventArgs args) + { + Preference.ShowFooter = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual async Task OnShowMenuChangedAsync(ChangeEventArgs args) + { + Preference.ShowMenu = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual async Task OnShowMenuHeaderChangedAsync(ChangeEventArgs args) + { + Preference.ShowMenuHeader = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual async Task OnColorWeakChangedAsync(ChangeEventArgs args) + { + Preference.ColorWeak = ReadBoolean(args); + await SaveAsync(); + } + + protected virtual bool ReadBoolean(ChangeEventArgs args) + { + return args.Value switch + { + bool boolValue => boolValue, + string stringValue when bool.TryParse(stringValue, out var result) => result, + _ => false + }; + } + + protected virtual async Task SaveAsync() + { + try + { + await AntDesignSettingsProvider.ApplyPreferenceAsync(new UpdateAntDesignThemePreferenceDto + { + ThemeStyle = Preference.ThemeStyle, + NavigationMode = Preference.NavigationMode, + ContentWidth = Preference.ContentWidth, + FixedHeader = Preference.FixedHeader, + FixSiderbar = Preference.FixSiderbar, + SplitMenus = Preference.SplitMenus, + ShowHeader = Preference.ShowHeader, + ShowFooter = Preference.ShowFooter, + ShowMenu = Preference.ShowMenu, + ShowMenuHeader = Preference.ShowMenuHeader, + ColorWeak = Preference.ColorWeak + }); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + try + { + Preference = await AntDesignSettingsProvider.GetPreferenceAsync(); + } + catch + { + // Intentionally ignored to keep the panel responsive even if reloading fails. + } + + await InvokeAsync(StateHasChanged); + } + } + + protected virtual async Task OnSettingChangedAsync() + { + try + { + if (!CurrentUser.IsAuthenticated) + { + return; + } + + Preference = await AntDesignSettingsProvider.GetPreferenceAsync(); + IsVisible = Preference.ThemeSettingsEnabled; + if (!IsVisible) + { + PanelVisible = false; + } + else + { + _jsInitialized = false; + } + + await InvokeAsync(StateHasChanged); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + + public async ValueTask DisposeAsync() + { + if (_isSubscribedToSettingChanged) + { + AntDesignSettingsProvider.SettingChanged -= OnSettingChangedAsync; + _isSubscribedToSettingChanged = false; + } + + try + { + await JsRuntime.InvokeVoidAsync("lswAntDesignThemeSettings.dispose", HostId); + } + catch + { + // Ignore disposal errors when the JS runtime is no longer available. + } + } + + protected record OptionItem(string Value, string LocalizationKey, string CssClass); +} diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/css/theme.css b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/css/theme.css index cbc0cc1..10690bd 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/css/theme.css +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/css/theme.css @@ -15,34 +15,112 @@ app { min-height: 100vh; } -.ant-design-header-top { - background-color: #001529; +.lsw-pro-theme { + --lsw-primary-color: #1677ff; + --lsw-bg: #f5f7fb; + --lsw-panel-bg: #ffffff; + --lsw-elevated-bg: #ffffff; + --lsw-input-bg: #ffffff; + --lsw-overlay-bg: #ffffff; + --lsw-text: #1f2329; + --lsw-text-secondary: #5d6773; + --lsw-border: #d9e0e7; + --lsw-nav-border: #d9e0e7; + --lsw-header-bg: #ffffff; + --lsw-header-text: #1f2329; + --lsw-sider-bg: #ffffff; + --lsw-sider-text: #1f2329; + --lsw-menu-hover-bg: #edf4ff; + --lsw-menu-active-bg: #e1eeff; + --lsw-shadow: 0 8px 24px rgba(15, 23, 42, 0.09); + --lsw-mask-bg: rgba(0, 0, 0, 0.36); + background-color: var(--lsw-bg); + color: var(--lsw-text); } -.ant-design-header-top-light { - background-color: #fff; +.lsw-pro-theme-dark { + --lsw-bg: #f5f7fb; + --lsw-panel-bg: #ffffff; + --lsw-elevated-bg: #ffffff; + --lsw-input-bg: #ffffff; + --lsw-overlay-bg: #ffffff; + --lsw-text: #1f2329; + --lsw-text-secondary: #5d6773; + --lsw-border: #d9e0e7; + --lsw-nav-border: #30343b; + --lsw-header-bg: #202124; + --lsw-header-text: #e8eaed; + --lsw-sider-bg: #202124; + --lsw-sider-text: #e8eaed; + --lsw-menu-hover-bg: rgba(255, 255, 255, 0.08); + --lsw-menu-active-bg: rgba(22, 119, 255, 0.28); + --lsw-shadow: 0 8px 24px rgba(15, 23, 42, 0.09); + --lsw-mask-bg: rgba(0, 0, 0, 0.36); } -.ant-design-header-left { - background-color: white; - box-shadow: 0 -2px 4px; +.lsw-pro-theme-real-dark { + --lsw-bg: #0e1116; + --lsw-panel-bg: #151922; + --lsw-elevated-bg: #1b202a; + --lsw-input-bg: #1b202a; + --lsw-overlay-bg: #151922; + --lsw-text: #e6edf3; + --lsw-text-secondary: #9ba5b2; + --lsw-border: #2a313b; + --lsw-nav-border: #242a34; + --lsw-header-bg: #11161d; + --lsw-header-text: #e6edf3; + --lsw-sider-bg: #11161d; + --lsw-sider-text: #e6edf3; + --lsw-menu-hover-bg: rgba(255, 255, 255, 0.08); + --lsw-menu-active-bg: rgba(22, 119, 255, 0.3); + --lsw-shadow: 0 12px 30px rgba(0, 0, 0, 0.45); + --lsw-mask-bg: rgba(0, 0, 0, 0.55); } -.ant-design-header-left-light { - background-color: #001529; +body.lsw-pro-theme { + background: var(--lsw-bg); + color: var(--lsw-text); } -.ant-design-body-content { - margin: 16px 50px; +body.lsw-pro-theme .ant-layout, +body.lsw-pro-theme .ant-layout-content, +body.lsw-pro-theme .ant-design-layout { + background: var(--lsw-bg); + color: var(--lsw-text); } -.ant-design-footer { - text-align: center; +.lsw-pro-theme .ant-design-content { + background: var(--lsw-bg); + color: var(--lsw-text); +} + +.lsw-pro-theme.ant-layout, +.lsw-pro-theme .ant-layout, +.lsw-pro-theme .ant-layout-content { + background: var(--lsw-bg); + color: var(--lsw-text); +} + +.lsw-pro-theme .ant-design-body-content { + margin: 16px 24px 0; +} + +.lsw-pro-content-fixed .lsw-pro-page-container { + max-width: 1200px; + margin: 0 auto; +} + +.lsw-pro-content-fluid .lsw-pro-page-container { + max-width: none; } .page-content { min-height: 70vh; - background: #fff; + background: var(--lsw-panel-bg); + color: var(--lsw-text); + border-radius: 10px; + box-shadow: var(--lsw-shadow); padding: 24px; margin-top: 8px; } @@ -51,54 +129,121 @@ app { font-size: 20px; font-weight: 600; margin-top: 8px; + color: var(--lsw-text); +} + +.ant-design-row-breadcrumb { + row-gap: 10px; + margin-bottom: 8px; + margin-left: 0 !important; + margin-right: 0 !important; +} + +.ant-design-page-breadcrumb-col, +.ant-design-page-toolbar-col { + min-width: 0; + padding-left: 0 !important; + padding-right: 0 !important; +} + +.ant-design-page-toolbar-row { + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + gap: 10px; +} + +.ant-design-page-toolbar-item { + margin: 0; +} + +.ant-design-page-toolbar-item .ant-btn { + white-space: nowrap; + max-width: 100%; +} + +.ant-design-page-toolbar-col { + display: flex; + justify-content: flex-end; +} + +.ant-design-header-top, +.ant-design-header-left { + background: var(--lsw-header-bg); + color: var(--lsw-header-text); + border-bottom: 1px solid var(--lsw-nav-border, var(--lsw-border)); +} + +.ant-design-header-fixed { + position: sticky; + top: 0; + z-index: 1000; + box-shadow: 0 6px 16px rgba(15, 23, 42, 0.08); +} + +.ant-design-header-top-dark, +.ant-design-header-left-dark { + background: var(--lsw-header-bg); + color: var(--lsw-header-text); +} + +.ant-design-header-top-light, +.ant-design-header-left-light { + background: var(--lsw-header-bg); + color: var(--lsw-header-text); } .ant-design-header-left .trigger { font-size: 18px; line-height: 64px; cursor: pointer; - transition: color 0.3s; + color: var(--lsw-header-text); + transition: color 0.2s ease; } .ant-design-header-left .trigger:hover { - color: #1890ff; + color: var(--lsw-primary-color); } -.ant-design-header-left-light .trigger { - color: white; +.lsw-pro-header-trigger-wrapper { + float: left; +} + +.ant-design-side { + background: var(--lsw-sider-bg); + color: var(--lsw-sider-text); + border-right: 1px solid var(--lsw-nav-border, var(--lsw-border)); } .ant-design-side .ant-design-brand { font-size: 18px; font-weight: 600; display: flex; - padding: 16px 16px; + align-items: center; + padding: 16px; cursor: pointer; } .ant-design-side .ant-design-brand a { - display: flex + display: flex; + align-items: center; } - .ant-design-side .ant-design-brand img { display: inline-block; - height: 40px + height: 36px; } .ant-design-side .ant-design-brand h1 { display: inline-block; - color: white; - margin: 0 0 0 15px; + color: var(--lsw-sider-text); + margin: 0 0 0 12px; + line-height: 1.1; } .ant-layout-sider-light .ant-design-brand h1 { - color: #001529; -} - -.ant-design-header-top .ant-design-brand img { - display: inline-block; - height: 35px + color: #111827; } .ant-design-header-top .ant-design-brand { @@ -107,64 +252,842 @@ app { min-width: 170px; } +.ant-design-header-top .ant-design-brand img { + display: inline-block; + height: 34px; +} + .ant-design-header-top .ant-design-brand h1 { display: inline-block; - color: white; - margin: 0 0 0 12px; - font-weight: 400; + color: var(--lsw-header-text); + margin: 0 0 0 10px; + font-weight: 500; font-size: 15px; vertical-align: top; } -.ant-design-header-top-light .ant-design-brand h1 { - color: #001529; -} - .ant-design-header-top .ant-menu-root { - margin-left: 20px; + margin-left: 16px; float: left; } -.abp-application-layout .ant-menu-sub li { - min-width: 120px; +.lsw-pro-theme .ant-design-side .ant-menu, +.lsw-pro-theme .ant-design-header-top .ant-menu, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal { + background: var(--lsw-header-bg) !important; +} + +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal { + border-bottom: none !important; +} + +.lsw-pro-theme .ant-design-header-top, +.lsw-pro-theme .ant-design-header-left { + height: 64px; + line-height: 64px; +} + +.lsw-pro-theme .ant-design-header-top .ant-design-brand { + height: 64px; + display: flex; + align-items: center; +} + +.lsw-pro-theme .ant-design-header-top .ant-menu-root, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal { + height: 64px; + line-height: 64px; +} + +.lsw-pro-theme .ant-design-header-top .ant-row { + height: 64px; + display: flex; + align-items: center; +} + +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-item, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-submenu { + color: var(--lsw-header-text); + border-bottom: none !important; + margin-bottom: 0 !important; + height: 64px !important; + line-height: 64px !important; + top: 0 !important; + box-sizing: border-box; + background: transparent !important; +} + +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-item::after, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-submenu::after { + display: none !important; + border-bottom: none !important; } -.ant-design-header-left .nav-link { - color: #001529; +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-item:hover, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-submenu:hover { + color: var(--lsw-primary-color); } -.ant-design-header-left-light .nav-link { - color: white; +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-item-selected { + color: var(--lsw-primary-color) !important; + border-bottom: none !important; + box-shadow: inset 0 -2px 0 var(--lsw-primary-color); + background: transparent !important; } -.ant-design-header-top .nav-link { - color: white; +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-submenu-selected { + color: var(--lsw-primary-color) !important; + border-bottom: none !important; + box-shadow: inset 0 -2px 0 var(--lsw-primary-color); + background: transparent !important; } -.ant-design-header-top-light .nav-link { - color: #001529; +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-item:hover, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-submenu:hover, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-item-active, +.lsw-pro-theme .ant-design-header-top .ant-menu-horizontal > .ant-menu-submenu-active { + background: transparent !important; + border-bottom: none !important; + box-shadow: none; +} + +.lsw-pro-theme .ant-design-header-top { + border-bottom: 1px solid var(--lsw-nav-border, var(--lsw-border)) !important; + box-shadow: inset 0 -1px 0 var(--lsw-nav-border, var(--lsw-border)); +} + +.lsw-pro-theme .ant-design-side .ant-menu-item, +.lsw-pro-theme .ant-design-side .ant-menu-submenu-title { + color: var(--lsw-sider-text) !important; +} + +.lsw-pro-theme .ant-design-side .ant-menu-item a, +.lsw-pro-theme .ant-design-header-top .ant-menu-item a, +.lsw-pro-theme .ant-design-header-top .ant-menu-submenu-title a { + color: inherit !important; +} + +.lsw-pro-theme .ant-design-side .ant-menu-item:hover, +.lsw-pro-theme .ant-design-side .ant-menu-submenu-title:hover { + background: var(--lsw-menu-hover-bg) !important; +} + +.lsw-pro-theme .ant-design-side .ant-menu-item-selected, +.lsw-pro-theme .ant-design-side .ant-menu-submenu-selected > .ant-menu-submenu-title { + background: var(--lsw-menu-active-bg) !important; + color: var(--lsw-sider-text) !important; +} + +.lsw-pro-theme .ant-menu-submenu-popup .ant-menu { + background: var(--lsw-overlay-bg); + color: var(--lsw-text); + border: 1px solid var(--lsw-border); + box-shadow: var(--lsw-shadow); +} + +.lsw-pro-theme .ant-menu-submenu-popup { + z-index: 1700 !important; +} + +.abp-application-layout .ant-menu-sub li { + min-width: 120px; +} + +.lsw-pro-theme .nav-link, +.lsw-pro-theme .ant-dropdown-link, +.lsw-pro-theme .ant-dropdown-trigger { + color: var(--lsw-header-text); +} + +.lsw-pro-theme .ant-design-header-top .anticon, +.lsw-pro-theme .ant-design-header-left .anticon { + color: var(--lsw-header-text); } .ant-dropdown-link { margin-right: 20px; } -.ant-design-header-left .ant-dropdown-link { - color: #001529; +.ant-design-footer { + text-align: center; + color: var(--lsw-text-secondary); + background: var(--lsw-bg, transparent); + margin-top: 16px; +} + +.ant-design-footer:empty { + display: none; +} + +.lsw-pro-theme .ant-layout-footer, +.lsw-pro-theme .ant-layout-footer.ant-design-footer { + background: var(--lsw-bg) !important; + color: var(--lsw-text-secondary) !important; + border-top: 1px solid var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-btn-primary { + background-color: var(--lsw-primary-color); + border-color: var(--lsw-primary-color); +} + +.lsw-pro-theme .ant-btn-primary, +.lsw-pro-theme .ant-btn-primary > span, +.lsw-pro-theme .ant-btn-primary .anticon, +.lsw-pro-theme .ant-btn-primary a { + color: #ffffff !important; +} + +.lsw-pro-theme .ant-btn-primary:hover, +.lsw-pro-theme .ant-btn-primary:focus { + filter: brightness(0.95); +} + +.lsw-pro-theme .ant-table, +.lsw-pro-theme .ant-card, +.lsw-pro-theme .ant-modal-content, +.lsw-pro-theme .ant-modal-header, +.lsw-pro-theme .ant-modal-body, +.lsw-pro-theme .ant-modal-footer, +.lsw-pro-theme .ant-dropdown-menu, +.lsw-pro-theme .ant-select-dropdown, +.lsw-pro-theme .ant-picker-dropdown .ant-picker-panel-container, +.lsw-pro-theme .ant-cascader-menus { + background: var(--lsw-panel-bg) !important; + color: var(--lsw-text) !important; + border-color: var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-table-thead > tr > th { + background: var(--lsw-elevated-bg) !important; + color: var(--lsw-text) !important; + border-bottom-color: var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-table-tbody > tr > td { + background: var(--lsw-panel-bg) !important; + color: var(--lsw-text) !important; + border-bottom-color: var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-table-tbody > tr.ant-table-row:hover > td { + background: var(--lsw-elevated-bg) !important; +} + +.lsw-pro-theme .ant-modal-header, +.lsw-pro-theme .ant-modal-footer { + border-color: var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-modal-close-x, +.lsw-pro-theme .ant-select-item, +.lsw-pro-theme .ant-picker-cell, +.lsw-pro-theme .ant-picker-header, +.lsw-pro-theme .ant-dropdown-menu-item, +.lsw-pro-theme .ant-dropdown-menu-submenu-title { + color: var(--lsw-text) !important; +} + +.lsw-pro-theme .ant-dropdown-menu-item:hover, +.lsw-pro-theme .ant-dropdown-menu-submenu-title:hover, +.lsw-pro-theme .ant-select-item-option-active:not(.ant-select-item-option-disabled) { + background: var(--lsw-menu-hover-bg) !important; +} + +.lsw-pro-theme .ant-dropdown-menu.ant-dropdown-menu-light, +.lsw-pro-theme .ant-dropdown-menu.ant-dropdown-menu-dark { + background: var(--lsw-overlay-bg) !important; + border: 1px solid var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-dropdown-menu-item-selected, +.lsw-pro-theme .ant-dropdown-menu-submenu-title-selected { + background: var(--lsw-menu-active-bg) !important; + color: var(--lsw-text) !important; +} + +.lsw-pro-theme .ant-select-item-option-selected:not(.ant-select-item-option-disabled) { + background: var(--lsw-menu-active-bg) !important; + color: var(--lsw-text) !important; +} + +.lsw-pro-theme .ant-select-dropdown .ant-select-item-option-content, +.lsw-pro-theme .ant-picker-header button, +.lsw-pro-theme .ant-picker-content th, +.lsw-pro-theme .ant-picker-content td, +.lsw-pro-theme .ant-picker-panel, +.lsw-pro-theme .ant-picker-cell-in-view, +.lsw-pro-theme .ant-empty-description { + color: var(--lsw-text) !important; +} + +.lsw-pro-theme .ant-picker-content th, +.lsw-pro-theme .ant-picker-header, +.lsw-pro-theme .ant-picker-cell, +.lsw-pro-theme .ant-picker-panel-container { + border-color: var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-modal-title, +.lsw-pro-theme .ant-form-item-label > label, +.lsw-pro-theme .ant-typography, +.lsw-pro-theme .ant-descriptions-item-label, +.lsw-pro-theme .ant-descriptions-item-content { + color: var(--lsw-text) !important; +} + +.lsw-pro-theme .ant-form, +.lsw-pro-theme .ant-form label, +.lsw-pro-theme .ant-checkbox-wrapper, +.lsw-pro-theme .ant-radio-wrapper, +.lsw-pro-theme .ant-tabs-tab-btn, +.lsw-pro-theme .ant-tabs-tab, +.lsw-pro-theme .ant-list-item, +.lsw-pro-theme .ant-statistic-title, +.lsw-pro-theme .ant-statistic-content, +.lsw-pro-theme .ant-empty-description { + color: var(--lsw-text) !important; +} + +.lsw-pro-theme .ant-badge-status-text, +.lsw-pro-theme .ant-tag, +.lsw-pro-theme .ant-tabs-tab-btn, +.lsw-pro-theme .ant-select-selection-item, +.lsw-pro-theme .ant-select-selection-placeholder, +.lsw-pro-theme .ant-modal-confirm-title, +.lsw-pro-theme .ant-modal-confirm-content { + color: var(--lsw-text) !important; +} + +body.lsw-pro-theme-real-dark .ant-btn-default, +.lsw-pro-theme.lsw-pro-theme-real-dark .ant-btn-default { + background: #1b202a !important; + border-color: #3a4250 !important; + color: var(--lsw-text) !important; +} + +body.lsw-pro-theme-real-dark .ant-btn-default:hover, +body.lsw-pro-theme-real-dark .ant-btn-default:focus, +.lsw-pro-theme.lsw-pro-theme-real-dark .ant-btn-default:hover, +.lsw-pro-theme.lsw-pro-theme-real-dark .ant-btn-default:focus { + background: #232a36 !important; + border-color: #4a5568 !important; + color: var(--lsw-text) !important; +} + +body.lsw-pro-theme-real-dark .ant-checkbox-inner, +.lsw-pro-theme.lsw-pro-theme-real-dark .ant-checkbox-inner { + background-color: #1b202a !important; + border-color: #4a5568 !important; +} + +body.lsw-pro-theme-real-dark .ant-checkbox-checked .ant-checkbox-inner, +.lsw-pro-theme.lsw-pro-theme-real-dark .ant-checkbox-checked .ant-checkbox-inner { + background-color: var(--lsw-primary-color) !important; + border-color: var(--lsw-primary-color) !important; +} + +body.lsw-pro-theme-real-dark .ant-checkbox + span, +.lsw-pro-theme.lsw-pro-theme-real-dark .ant-checkbox + span { + color: var(--lsw-text) !important; +} + +.lsw-pro-theme .ant-input, +.lsw-pro-theme .ant-input-affix-wrapper, +.lsw-pro-theme .ant-input-number, +.lsw-pro-theme .ant-input-number-input, +.lsw-pro-theme .ant-select-selector, +.lsw-pro-theme .ant-picker, +.lsw-pro-theme textarea.ant-input { + background: var(--lsw-input-bg) !important; + color: var(--lsw-text) !important; + border-color: var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-select-arrow, +.lsw-pro-theme .ant-picker-suffix, +.lsw-pro-theme .ant-input-password-icon { + color: var(--lsw-text-secondary) !important; +} + +.lsw-pro-theme .ant-input::placeholder, +.lsw-pro-theme textarea.ant-input::placeholder { + color: var(--lsw-text-secondary) !important; +} + +.lsw-pro-theme .ant-pagination-item, +.lsw-pro-theme .ant-pagination-prev .ant-pagination-item-link, +.lsw-pro-theme .ant-pagination-next .ant-pagination-item-link { + background: var(--lsw-elevated-bg) !important; + border-color: var(--lsw-border) !important; +} + +.lsw-pro-theme .ant-pagination-item a, +.lsw-pro-theme .ant-pagination-item-link, +.lsw-pro-theme .ant-pagination-jump-prev .ant-pagination-item-container, +.lsw-pro-theme .ant-pagination-jump-next .ant-pagination-item-container { + color: var(--lsw-text) !important; +} + +.lsw-theme-setting-fab { + position: fixed; + top: 60vh; + right: -24px; + z-index: 1510; + transition: opacity 0.25s ease, transform 0.25s ease, right 0.25s ease; + width: 52px; + height: 52px; + border: none; + border-radius: 10px 0 0 10px; + background: var(--lsw-primary-color, #1677ff); + color: #ffffff; + box-shadow: 0 8px 18px rgba(15, 23, 42, 0.22); + cursor: grab; + display: inline-flex; + align-items: center; + justify-content: flex-start; + padding: 0; + padding-left: 10px; + outline: none; + opacity: 1; + border-top: 1px solid rgba(255, 255, 255, 0.28); + border-left: 1px solid rgba(255, 255, 255, 0.28); + border-bottom: 1px solid rgba(0, 0, 0, 0.08); +} + +.lsw-theme-setting-fab-active { + opacity: 0 !important; + pointer-events: none !important; + transform: translateX(24px); +} + +.lsw-theme-setting-fab-faded:not(.lsw-theme-setting-fab-active) { + opacity: 0.78; +} + +.lsw-theme-setting-fab:active { + cursor: grabbing; +} + +.lsw-theme-setting-fab-handle { + width: 100%; + height: 100%; + display: inline-flex; + align-items: center; + justify-content: center; + pointer-events: none; +} + +.lsw-theme-setting-fab-icon .anticon { + color: #ffffff; + font-size: 19px; +} + +.lsw-theme-setting-mask { + position: fixed; + inset: 0; + background: var(--lsw-mask-bg, rgba(0, 0, 0, 0.36)); + opacity: 0; + pointer-events: none; + transition: opacity 0.2s ease; + z-index: 1490; +} + +.lsw-theme-setting-mask.is-open { + opacity: 1; + pointer-events: auto; +} + +.lsw-pro-mobile-sider-mask { + position: fixed; + inset: 0; + background: var(--lsw-mask-bg, rgba(0, 0, 0, 0.36)); + z-index: 1300; +} + +.lsw-theme-setting-panel { + position: fixed; + top: 0; + right: 0; + height: 100vh; + width: min(360px, calc(100vw - 24px)); + background-color: var(--lsw-overlay-bg, var(--lsw-panel-bg, #ffffff)); + color: var(--lsw-text, #1f2329); + border-left: 1px solid var(--lsw-border, #d9e0e7); + box-shadow: var(--lsw-shadow, 0 8px 24px rgba(15, 23, 42, 0.15)); + transform: translateX(100%); + transition: transform 0.25s ease; + opacity: 1; + z-index: 1500; + display: flex; + flex-direction: column; +} + +.lsw-theme-setting-panel.is-open { + transform: translateX(0); +} + +.lsw-theme-setting-panel-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 18px 20px; + border-bottom: 1px solid var(--lsw-border); +} + +.lsw-theme-setting-panel-header h3 { + margin: 0; + font-size: 22px; + color: var(--lsw-text); +} + +.lsw-theme-setting-close { + border: none; + background: transparent; + color: var(--lsw-text-secondary); + cursor: pointer; +} + +.lsw-theme-setting-panel-body { + overflow: auto; + padding: 18px 20px 24px; +} + +.lsw-theme-setting-section { + border-bottom: 1px solid var(--lsw-border); + padding: 16px 0; +} + +.lsw-theme-setting-section:last-child { + border-bottom: none; +} + +.lsw-theme-setting-section h4 { + margin: 0 0 14px; + font-size: 18px; + color: var(--lsw-text); +} + +.lsw-theme-style-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 10px; +} + +.lsw-theme-style-grid-nav { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.lsw-theme-style-option { + border: 1px solid var(--lsw-border); + border-radius: 8px; + background: var(--lsw-elevated-bg); + color: var(--lsw-text); + padding: 8px; + cursor: pointer; +} + +.lsw-theme-style-option.active { + border-color: var(--lsw-primary-color); + box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.15); +} + +.lsw-theme-style-preview { + display: block; + width: 100%; + height: 42px; + border-radius: 6px; + margin-bottom: 8px; + border: none; + box-shadow: inset 0 0 0 1px var(--lsw-border); + overflow: hidden; + background-clip: padding-box; +} + +.lsw-theme-style-label { + font-size: 12px; + color: var(--lsw-text-secondary); +} + +.lsw-theme-preview-light { + background: linear-gradient(90deg, #ffffff 0 38%, #f3f4f6 38% 100%); +} + +.lsw-theme-preview-dark { + background: linear-gradient(90deg, #202124 0 35%, #f3f4f6 35% 100%); +} + +.lsw-theme-preview-real-dark { + background: linear-gradient(90deg, #11161d 0 38%, #151922 38% 100%); +} + +.lsw-theme-preview-nav-side { + background: linear-gradient(90deg, #202124 0 34%, #ffffff 34% 100%); } -.ant-design-header-top .ant-dropdown-trigger { - color: white; +.lsw-theme-preview-nav-top { + background: linear-gradient(180deg, #202124 0 28%, #ffffff 28% 100%); } -.ant-design-header-top-light .ant-dropdown-trigger{ - color: #001529; +.lsw-theme-setting-item { + display: flex; + align-items: center; + justify-content: space-between; + gap: 14px; + margin-bottom: 14px; + color: var(--lsw-text); +} + +.lsw-theme-setting-item:last-child { + margin-bottom: 0; +} + +.lsw-theme-setting-select { + width: 132px; + border: 1px solid var(--lsw-border); + border-radius: 6px; + padding: 6px 8px; + background: var(--lsw-elevated-bg); + color: var(--lsw-text); +} + +.lsw-theme-setting-switch { + position: relative; + display: inline-flex; + width: 44px; + height: 24px; +} + +.lsw-theme-setting-switch input { + opacity: 0; + width: 0; + height: 0; +} + +.lsw-theme-setting-switch span { + position: absolute; + inset: 0; + border-radius: 999px; + background: #bfbfbf; + transition: background 0.2s ease; +} + +.lsw-theme-setting-switch span::before { + content: ""; + position: absolute; + width: 18px; + height: 18px; + left: 3px; + top: 3px; + border-radius: 50%; + background: #ffffff; + transition: transform 0.2s ease; +} + +.lsw-theme-setting-switch input:checked + span { + background: var(--lsw-primary-color); +} + +.lsw-theme-setting-switch input:checked + span::before { + transform: translateX(20px); +} + +.lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav { + flex: 0 0 280px; + max-width: 280px; + min-width: 240px; + margin-right: 18px; +} + +.lsw-setting-management-page .ant-tabs-left > .ant-tabs-content-holder { + min-width: 0; + overflow-x: hidden; +} + +.lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav .ant-tabs-tab { + padding: 12px 16px; + margin: 0 0 8px; + border-radius: 8px; +} + +.lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav .ant-tabs-tab-btn { + white-space: normal; + line-height: 1.35; + word-break: break-word; +} + +.lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav .ant-tabs-tab-active { + background: var(--lsw-menu-hover-bg); +} + +.lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav .ant-tabs-tab-active .ant-tabs-tab-btn { + color: var(--lsw-primary-color) !important; + font-weight: 600; +} + +.lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav .ant-tabs-ink-bar { + width: 4px !important; + border-radius: 4px; +} + +.lsw-setting-management-page, +.lsw-setting-management-page .ant-tabs, +.lsw-setting-management-page .ant-tabs-content, +.lsw-setting-management-page .ant-tabs-tabpane { + min-width: 0; +} + +.lsw-setting-management-page { + overflow-x: hidden; } -.ant-design-header-top-light .ant-dropdown-trigger{ - color: #001529; +.lsw-setting-management-mobile-selector { + display: none; + margin-bottom: 12px; } -.ant-design-header-left-light .ant-dropdown-trigger{ - color: white; +.lsw-setting-management-mobile-selector .ant-select { + width: 100%; +} + +.lsw-pro-theme .lsw-setting-management-page h4 { + color: var(--lsw-text) !important; + font-weight: 600; +} + +.lsw-pro-theme .lsw-setting-management-page .ant-divider { + border-color: var(--lsw-border) !important; +} + +.lsw-theme-settings-management-root { + margin-bottom: 16px; +} + +.lsw-theme-settings-management-children { + margin-top: 14px; + margin-left: 28px; + display: flex; + flex-direction: column; + gap: 12px; +} + +.lsw-theme-settings-management-item { + line-height: 1.35; +} + +.lsw-theme-settings-management-actions { + margin-top: 24px; +} + +@media (max-width: 992px) { + .lsw-pro-theme .ant-design-body-content { + margin: 12px; + } + + .lsw-pro-theme.lsw-pro-nav-side > .ant-design-layout.ant-layout { + min-width: 0; + } + + .lsw-pro-side-mobile { + box-shadow: 10px 0 24px rgba(15, 23, 42, 0.26); + } + + .lsw-pro-theme.lsw-pro-nav-side > .ant-layout-sider + .ant-layout.ant-design-layout { + margin-left: 64px; + width: calc(100% - 64px); + min-width: 0; + } + + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top { + display: flex; + align-items: center; + gap: 8px; + padding: 0 10px; + overflow: hidden; + } + + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top .ant-design-brand { + float: none; + min-width: auto; + flex: 0 0 auto; + margin-right: 2px; + } + + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top .ant-menu-root { + float: none; + margin-left: 0; + flex: 1 1 auto; + min-width: 0; + overflow-x: auto; + overflow-y: visible; + -webkit-overflow-scrolling: touch; + scrollbar-width: thin; + } + + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top .ant-menu-horizontal { + display: flex; + flex-wrap: nowrap; + min-width: max-content; + } + + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top .ant-row { + flex: 0 0 auto; + margin-left: 8px; + } + + .ant-design-row-breadcrumb .ant-design-breadcrumb { + overflow-x: auto; + white-space: nowrap; + padding-bottom: 2px; + } + + .lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav { + flex: 0 0 220px; + max-width: 220px; + min-width: 200px; + margin-right: 14px; + } + + .lsw-theme-settings-management-children { + margin-left: 18px; + gap: 14px; + } + + .lsw-theme-setting-panel { + width: min(340px, calc(100vw - 12px)); + } +} + +@media (max-width: 768px) { + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top .ant-design-brand h1 { + display: none; + } + + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top .ant-menu-horizontal > .ant-menu-item, + .lsw-pro-theme.lsw-pro-nav-top .ant-design-header-top .ant-menu-horizontal > .ant-menu-submenu { + padding-left: 10px !important; + padding-right: 10px !important; + } + + .ant-design-row-breadcrumb > .ant-design-page-breadcrumb-col, + .ant-design-row-breadcrumb > .ant-design-page-toolbar-col { + flex: 0 0 100%; + max-width: 100%; + } + + .ant-design-row-breadcrumb .ant-design-page-toolbar-row { + justify-content: flex-end; + } + + .lsw-setting-management-page .ant-tabs-left { + flex-direction: row; + } + + .lsw-setting-management-page .ant-tabs-left > .ant-tabs-nav { + display: none; + } + + .lsw-setting-management-mobile-selector { + display: block; + } } diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/js/theme-settings.js b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/js/theme-settings.js new file mode 100644 index 0000000..0beb5f9 --- /dev/null +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/wwwroot/libs/abp/js/theme-settings.js @@ -0,0 +1,200 @@ +(function () { + if (!window.lswAntDesignThemeSettings) { + window.lswAntDesignThemeSettings = {}; + } + + const registry = {}; + const themeClasses = [ + "lsw-pro-theme", + "lsw-pro-theme-light", + "lsw-pro-theme-dark", + "lsw-pro-theme-real-dark", + "colorWeak" + ]; + + function clamp(value, min, max) { + return Math.min(Math.max(value, min), max); + } + + function clearFadeTimer(state) { + if (state.fadeTimer) { + window.clearTimeout(state.fadeTimer); + state.fadeTimer = null; + } + } + + function scheduleFade(state) { + clearFadeTimer(state); + state.fadeTimer = window.setTimeout(() => { + if (!state.host.classList.contains("lsw-theme-setting-fab-active")) { + state.host.classList.add("lsw-theme-setting-fab-faded"); + } + }, 1200); + } + + function snapToRight(state, keepTop) { + const host = state.host; + const rect = host.getBoundingClientRect(); + const width = rect.width || 48; + const top = keepTop ? rect.top : window.innerHeight * 0.6; + const clampedTop = clamp(top, 24, window.innerHeight - rect.height - 24); + + host.style.left = ""; + host.style.right = `${Math.round(-width / 2)}px`; + host.style.top = `${Math.round(clampedTop)}px`; + } + + function initialize(id) { + const host = document.getElementById(id); + if (!host || registry[id]) { + return; + } + + const handle = host; + + const state = { + host: host, + pointerId: null, + startX: 0, + startY: 0, + originX: 0, + originY: 0, + moved: false, + fadeTimer: null + }; + + const onPointerDown = function (evt) { + state.pointerId = evt.pointerId; + state.startX = evt.clientX; + state.startY = evt.clientY; + const rect = host.getBoundingClientRect(); + state.originX = rect.left; + state.originY = rect.top; + state.moved = false; + host.classList.remove("lsw-theme-setting-fab-faded"); + clearFadeTimer(state); + handle.setPointerCapture(evt.pointerId); + }; + + const onPointerMove = function (evt) { + if (state.pointerId !== evt.pointerId) { + return; + } + + const dx = evt.clientX - state.startX; + const dy = evt.clientY - state.startY; + if (Math.abs(dx) > 3 || Math.abs(dy) > 3) { + state.moved = true; + } + + if (!state.moved) { + return; + } + + const rect = host.getBoundingClientRect(); + const nextLeft = clamp(state.originX + dx, 0, window.innerWidth - rect.width); + const nextTop = clamp(state.originY + dy, 24, window.innerHeight - rect.height - 24); + + host.style.right = ""; + host.style.left = `${Math.round(nextLeft)}px`; + host.style.top = `${Math.round(nextTop)}px`; + }; + + const onPointerUp = function (evt) { + if (state.pointerId !== evt.pointerId) { + return; + } + + state.pointerId = null; + if (state.moved) { + snapToRight(state, true); + } + scheduleFade(state); + }; + + const onMouseEnter = function () { + host.classList.remove("lsw-theme-setting-fab-faded"); + clearFadeTimer(state); + }; + + const onMouseLeave = function () { + scheduleFade(state); + }; + + const onWindowBlur = function () { + if (!host.classList.contains("lsw-theme-setting-fab-active")) { + host.classList.add("lsw-theme-setting-fab-faded"); + } + }; + + const onWindowFocus = function () { + host.classList.remove("lsw-theme-setting-fab-faded"); + }; + + handle.addEventListener("pointerdown", onPointerDown); + handle.addEventListener("pointermove", onPointerMove); + handle.addEventListener("pointerup", onPointerUp); + handle.addEventListener("pointercancel", onPointerUp); + host.addEventListener("mouseenter", onMouseEnter); + host.addEventListener("mouseleave", onMouseLeave); + window.addEventListener("blur", onWindowBlur); + window.addEventListener("focus", onWindowFocus); + + registry[id] = { + state: state, + onPointerDown: onPointerDown, + onPointerMove: onPointerMove, + onPointerUp: onPointerUp, + onMouseEnter: onMouseEnter, + onMouseLeave: onMouseLeave, + onWindowBlur: onWindowBlur, + onWindowFocus: onWindowFocus + }; + + snapToRight(state, false); + scheduleFade(state); + } + + function dispose(id) { + const entry = registry[id]; + if (!entry) { + return; + } + + const host = entry.state.host; + const handle = host; + + if (handle) { + handle.removeEventListener("pointerdown", entry.onPointerDown); + handle.removeEventListener("pointermove", entry.onPointerMove); + handle.removeEventListener("pointerup", entry.onPointerUp); + handle.removeEventListener("pointercancel", entry.onPointerUp); + } + + host.removeEventListener("mouseenter", entry.onMouseEnter); + host.removeEventListener("mouseleave", entry.onMouseLeave); + window.removeEventListener("blur", entry.onWindowBlur); + window.removeEventListener("focus", entry.onWindowFocus); + clearFadeTimer(entry.state); + delete registry[id]; + } + + function applyThemeClass(themeClass) { + const body = document.body; + if (!body) { + return; + } + + themeClasses.forEach((name) => body.classList.remove(name)); + if (themeClass && typeof themeClass === "string") { + themeClass.split(" ") + .map((item) => item.trim()) + .filter((item) => item.length > 0) + .forEach((item) => body.classList.add(item)); + } + } + + window.lswAntDesignThemeSettings.initialize = initialize; + window.lswAntDesignThemeSettings.dispose = dispose; + window.lswAntDesignThemeSettings.applyThemeClass = applyThemeClass; +})(); diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling/BlazorWebAssemblyAntDesignThemeScriptContributor.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling/BlazorWebAssemblyAntDesignThemeScriptContributor.cs index 64cd2f8..20ed97b 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling/BlazorWebAssemblyAntDesignThemeScriptContributor.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling/BlazorWebAssemblyAntDesignThemeScriptContributor.cs @@ -8,5 +8,6 @@ public class BlazorWebAssemblyAntDesignThemeScriptContributor: BundleContributor public override void ConfigureBundle(BundleConfigurationContext context) { context.Files.AddIfNotContains("_content/AntDesign/js/ant-design-blazor.js"); + context.Files.AddIfNotContains("_content/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/libs/abp/js/theme-settings.js"); } -} \ No newline at end of file +} diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/ComponentsComponentsBundleContributor.cs b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/ComponentsComponentsBundleContributor.cs index fa39885..45188ac 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/ComponentsComponentsBundleContributor.cs +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/ComponentsComponentsBundleContributor.cs @@ -10,6 +10,7 @@ public class ComponentsComponentsBundleContributor : IBundleContributor context.Add("_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/abp.js"); context.Add("_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/lang-utils.js"); context.Add("_content/AntDesign/js/ant-design-blazor.js"); + context.Add("_content/Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme/libs/abp/js/theme-settings.js"); } public void AddStyles(BundleContext context) diff --git a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/Themes/AntDesignTheme/LanguageSwitch.razor b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/Themes/AntDesignTheme/LanguageSwitch.razor index a9a5aeb..69fc484 100644 --- a/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/Themes/AntDesignTheme/LanguageSwitch.razor +++ b/modules/AntDesignTheme/Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme/Themes/AntDesignTheme/LanguageSwitch.razor @@ -20,7 +20,7 @@ - @_currentLanguage.DisplayName + @_currentLanguage.DisplayName diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/AbpAntDesignThemeManagementApplicationContractsModule.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/AbpAntDesignThemeManagementApplicationContractsModule.cs new file mode 100644 index 0000000..0eec4e0 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/AbpAntDesignThemeManagementApplicationContractsModule.cs @@ -0,0 +1,31 @@ +using Lsw.Abp.AntDesignThemeManagement.Localization; +using Lsw.Abp.AntDesignThemeManagement.Settings; +using Volo.Abp.Authorization; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.SettingManagement; +using Volo.Abp.VirtualFileSystem; + +namespace Lsw.Abp.AntDesignThemeManagement; + +[DependsOn( + typeof(AbpAuthorizationModule), + typeof(AbpSettingManagementApplicationContractsModule) +)] +public class AbpAntDesignThemeManagementApplicationContractsModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/Localization/Resources/AntDesignThemeManagement"); + }); + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/AntDesignThemePreferenceDto.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/AntDesignThemePreferenceDto.cs new file mode 100644 index 0000000..6e7f825 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/AntDesignThemePreferenceDto.cs @@ -0,0 +1,22 @@ +namespace Lsw.Abp.AntDesignThemeManagement.Dtos; + +public class AntDesignThemePreferenceDto +{ + public bool ThemeSettingsEnabled { get; set; } + public bool PageStyleSettingEnabled { get; set; } + public bool NavigationModeSettingEnabled { get; set; } + public bool RegionalSettingsEnabled { get; set; } + public bool OtherSettingsEnabled { get; set; } + + public string ThemeStyle { get; set; } = string.Empty; + public string NavigationMode { get; set; } = string.Empty; + public string ContentWidth { get; set; } = string.Empty; + public bool FixedHeader { get; set; } + public bool FixSiderbar { get; set; } + public bool SplitMenus { get; set; } + public bool ShowHeader { get; set; } + public bool ShowFooter { get; set; } + public bool ShowMenu { get; set; } + public bool ShowMenuHeader { get; set; } + public bool ColorWeak { get; set; } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemePreferenceDto.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemePreferenceDto.cs new file mode 100644 index 0000000..a32687c --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemePreferenceDto.cs @@ -0,0 +1,16 @@ +namespace Lsw.Abp.AntDesignThemeManagement.Dtos; + +public class UpdateAntDesignThemePreferenceDto +{ + public string ThemeStyle { get; set; } = string.Empty; + public string NavigationMode { get; set; } = string.Empty; + public string ContentWidth { get; set; } = string.Empty; + public bool FixedHeader { get; set; } + public bool FixSiderbar { get; set; } + public bool SplitMenus { get; set; } + public bool ShowHeader { get; set; } + public bool ShowFooter { get; set; } + public bool ShowMenu { get; set; } + public bool ShowMenuHeader { get; set; } + public bool ColorWeak { get; set; } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemeSettingsAvailabilityDto.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemeSettingsAvailabilityDto.cs new file mode 100644 index 0000000..652d6f9 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Dtos/UpdateAntDesignThemeSettingsAvailabilityDto.cs @@ -0,0 +1,10 @@ +namespace Lsw.Abp.AntDesignThemeManagement.Dtos; + +public class UpdateAntDesignThemeSettingsAvailabilityDto +{ + public bool ThemeSettingsEnabled { get; set; } + public bool PageStyleSettingEnabled { get; set; } + public bool NavigationModeSettingEnabled { get; set; } + public bool RegionalSettingsEnabled { get; set; } + public bool OtherSettingsEnabled { get; set; } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/FodyWeavers.xml b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/FodyWeavers.xml new file mode 100644 index 0000000..7e9f94e --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/IAntDesignThemePreferenceAppService.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/IAntDesignThemePreferenceAppService.cs new file mode 100644 index 0000000..209763b --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/IAntDesignThemePreferenceAppService.cs @@ -0,0 +1,16 @@ +using System.Threading.Tasks; +using Lsw.Abp.AntDesignThemeManagement.Dtos; +using Volo.Abp.Application.Services; + +namespace Lsw.Abp.AntDesignThemeManagement; + +public interface IAntDesignThemePreferenceAppService : IApplicationService +{ + Task GetAsync(); + + Task UpdateAsync(UpdateAntDesignThemePreferenceDto input); + + Task UpdateThemeSettingsAvailabilityAsync(UpdateAntDesignThemeSettingsAvailabilityDto input); + + Task SetThemeSettingsEnabledAsync(bool isEnabled); +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/AntDesignThemeManagementResource.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/AntDesignThemeManagementResource.cs new file mode 100644 index 0000000..cc84488 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/AntDesignThemeManagementResource.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Localization; + +namespace Lsw.Abp.AntDesignThemeManagement.Localization; + +[LocalizationResourceName("AntDesignThemeManagement")] +public class AntDesignThemeManagementResource +{ +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/en.json b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/en.json new file mode 100644 index 0000000..0fdc40c --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/en.json @@ -0,0 +1,48 @@ +{ + "culture": "en", + "texts": { + "Permission:AntDesignThemeManagement": "Ant Design theme management", + "Permission:AntDesignThemeManagement.Settings": "Manage theme settings switch", + "ThemeSettings": "Theme settings", + "PageStyleSetting": "Page style setting", + "NavigationMode": "Navigation mode", + "ContentWidth": "Content width", + "FixedHeader": "Fixed header", + "WorksOnSideMenuLayout": "Works on side menu layout", + "SplitMenus": "Split menus", + "RegionalSettings": "Regional settings", + "Header": "Header", + "Footer": "Footer", + "Menu": "Menu", + "MenuHeader": "Menu header", + "OtherSettings": "Other settings", + "WeakMode": "Weak mode", + "Light": "Light", + "Dark": "Menu dark", + "RealDark": "Real dark", + "Side": "Side", + "Top": "Top", + "Mix": "Mix", + "Fluid": "Fluid", + "Fixed": "Fixed", + "Submit": "Submit", + "Menu:ThemeSettingsManagement": "Theme settings management", + "SavedSuccessfully": "Saved successfully.", + "Settings:EnableThemeSettings": "Enable theme settings", + "Settings:PageStyleSetting": "Page style setting", + "Settings:NavigationModeSetting": "Navigation mode", + "Settings:RegionalSettings": "Regional settings", + "Settings:OtherSettings": "Other settings", + "Settings:ThemeStyle": "Theme style", + "Settings:NavigationMode": "Navigation mode", + "Settings:ContentWidth": "Content width", + "Settings:FixedHeader": "Fixed header", + "Settings:FixSiderbar": "Fix siderbar", + "Settings:SplitMenus": "Split menus", + "Settings:ShowHeader": "Show header", + "Settings:ShowFooter": "Show footer", + "Settings:ShowMenu": "Show menu", + "Settings:ShowMenuHeader": "Show menu header", + "Settings:ColorWeak": "Weak mode" + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/zh-Hans.json b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/zh-Hans.json new file mode 100644 index 0000000..78254c2 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Localization/Resources/AntDesignThemeManagement/zh-Hans.json @@ -0,0 +1,48 @@ +{ + "culture": "zh-Hans", + "texts": { + "Permission:AntDesignThemeManagement": "AntDesign 主题管理", + "Permission:AntDesignThemeManagement.Settings": "管理主题设置开关", + "ThemeSettings": "主题设置", + "PageStyleSetting": "页面风格设置", + "NavigationMode": "导航模式", + "ContentWidth": "内容宽度", + "FixedHeader": "固定 Header", + "WorksOnSideMenuLayout": "侧边菜单布局生效", + "SplitMenus": "分割菜单", + "RegionalSettings": "区域设置", + "Header": "页头", + "Footer": "页脚", + "Menu": "菜单", + "MenuHeader": "菜单头", + "OtherSettings": "其他设置", + "WeakMode": "色弱模式", + "Light": "明亮", + "Dark": "菜单深色", + "RealDark": "深邃暗色", + "Side": "侧边", + "Top": "顶部", + "Mix": "混合", + "Fluid": "自适应", + "Fixed": "定宽", + "Submit": "提交", + "Menu:ThemeSettingsManagement": "主题设置管理", + "SavedSuccessfully": "保存成功。", + "Settings:EnableThemeSettings": "启用主题设置", + "Settings:PageStyleSetting": "页面风格设置", + "Settings:NavigationModeSetting": "导航模式", + "Settings:RegionalSettings": "区域设置", + "Settings:OtherSettings": "其他设置", + "Settings:ThemeStyle": "主题风格", + "Settings:NavigationMode": "导航模式", + "Settings:ContentWidth": "内容宽度", + "Settings:FixedHeader": "固定 Header", + "Settings:FixSiderbar": "固定侧边栏", + "Settings:SplitMenus": "分割菜单", + "Settings:ShowHeader": "显示页头", + "Settings:ShowFooter": "显示页脚", + "Settings:ShowMenu": "显示菜单", + "Settings:ShowMenuHeader": "显示菜单头", + "Settings:ColorWeak": "色弱模式" + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Lsw.Abp.AntDesignThemeManagement.Application.Contracts.csproj b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Lsw.Abp.AntDesignThemeManagement.Application.Contracts.csproj new file mode 100644 index 0000000..f1e9ae9 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Lsw.Abp.AntDesignThemeManagement.Application.Contracts.csproj @@ -0,0 +1,22 @@ + + + + + + + net10.0 + true + + + + + + + + + + + + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissionDefinitionProvider.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissionDefinitionProvider.cs new file mode 100644 index 0000000..0606fd2 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissionDefinitionProvider.cs @@ -0,0 +1,26 @@ +using Lsw.Abp.AntDesignThemeManagement.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace Lsw.Abp.AntDesignThemeManagement.Permissions; + +public class AntDesignThemeManagementPermissionDefinitionProvider : PermissionDefinitionProvider +{ + public override void Define(IPermissionDefinitionContext context) + { + var group = context.AddGroup( + AntDesignThemeManagementPermissions.GroupName, + L("Permission:AntDesignThemeManagement") + ); + + group.AddPermission( + AntDesignThemeManagementPermissions.Settings, + L("Permission:AntDesignThemeManagement.Settings") + ); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissions.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissions.cs new file mode 100644 index 0000000..566ccdb --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Permissions/AntDesignThemeManagementPermissions.cs @@ -0,0 +1,8 @@ +namespace Lsw.Abp.AntDesignThemeManagement.Permissions; + +public static class AntDesignThemeManagementPermissions +{ + public const string GroupName = "Lsw.AntDesignThemeManagement"; + + public const string Settings = GroupName + ".Settings"; +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingDefinitionProvider.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingDefinitionProvider.cs new file mode 100644 index 0000000..a710f5f --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingDefinitionProvider.cs @@ -0,0 +1,115 @@ +using Lsw.Abp.AntDesignThemeManagement.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Settings; + +namespace Lsw.Abp.AntDesignThemeManagement.Settings; + +public class AntDesignThemeManagementSettingDefinitionProvider : SettingDefinitionProvider +{ + public override void Define(ISettingDefinitionContext context) + { + context.Add( + new SettingDefinition( + AntDesignThemeManagementSettingNames.EnableThemeSettings, + AntDesignThemeSettingDefaults.EnableThemeSettings.ToString().ToLowerInvariant(), + L("Settings:EnableThemeSettings"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.EnablePageStyleSetting, + AntDesignThemeSettingDefaults.EnablePageStyleSetting.ToString().ToLowerInvariant(), + L("Settings:PageStyleSetting"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.EnableNavigationModeSetting, + AntDesignThemeSettingDefaults.EnableNavigationModeSetting.ToString().ToLowerInvariant(), + L("Settings:NavigationModeSetting"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.EnableRegionalSettings, + AntDesignThemeSettingDefaults.EnableRegionalSettings.ToString().ToLowerInvariant(), + L("Settings:RegionalSettings"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.EnableOtherSettings, + AntDesignThemeSettingDefaults.EnableOtherSettings.ToString().ToLowerInvariant(), + L("Settings:OtherSettings"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.ThemeStyle, + AntDesignThemeSettingDefaults.ThemeStyle, + L("Settings:ThemeStyle"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.NavigationMode, + AntDesignThemeSettingDefaults.NavigationMode, + L("Settings:NavigationMode"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.ContentWidth, + AntDesignThemeSettingDefaults.ContentWidth, + L("Settings:ContentWidth"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.FixedHeader, + AntDesignThemeSettingDefaults.FixedHeader.ToString().ToLowerInvariant(), + L("Settings:FixedHeader"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.FixSiderbar, + AntDesignThemeSettingDefaults.FixSiderbar.ToString().ToLowerInvariant(), + L("Settings:FixSiderbar"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.SplitMenus, + AntDesignThemeSettingDefaults.SplitMenus.ToString().ToLowerInvariant(), + L("Settings:SplitMenus"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.ShowHeader, + AntDesignThemeSettingDefaults.ShowHeader.ToString().ToLowerInvariant(), + L("Settings:ShowHeader"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.ShowFooter, + AntDesignThemeSettingDefaults.ShowFooter.ToString().ToLowerInvariant(), + L("Settings:ShowFooter"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.ShowMenu, + AntDesignThemeSettingDefaults.ShowMenu.ToString().ToLowerInvariant(), + L("Settings:ShowMenu"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.ShowMenuHeader, + AntDesignThemeSettingDefaults.ShowMenuHeader.ToString().ToLowerInvariant(), + L("Settings:ShowMenuHeader"), + isVisibleToClients: true + ), + new SettingDefinition( + AntDesignThemeManagementSettingNames.ColorWeak, + AntDesignThemeSettingDefaults.ColorWeak.ToString().ToLowerInvariant(), + L("Settings:ColorWeak"), + isVisibleToClients: true + ) + ); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingNames.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingNames.cs new file mode 100644 index 0000000..3494df7 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeManagementSettingNames.cs @@ -0,0 +1,24 @@ +namespace Lsw.Abp.AntDesignThemeManagement.Settings; + +public static class AntDesignThemeManagementSettingNames +{ + public const string GroupName = "Lsw.AntDesignTheme"; + + public const string EnableThemeSettings = GroupName + ".EnableThemeSettings"; + public const string EnablePageStyleSetting = GroupName + ".Enable.PageStyleSetting"; + public const string EnableNavigationModeSetting = GroupName + ".Enable.NavigationModeSetting"; + public const string EnableRegionalSettings = GroupName + ".Enable.RegionalSettings"; + public const string EnableOtherSettings = GroupName + ".Enable.OtherSettings"; + + public const string ThemeStyle = GroupName + ".ThemeStyle"; + public const string NavigationMode = GroupName + ".NavigationMode"; + public const string ContentWidth = GroupName + ".ContentWidth"; + public const string FixedHeader = GroupName + ".FixedHeader"; + public const string FixSiderbar = GroupName + ".FixSiderbar"; + public const string SplitMenus = GroupName + ".SplitMenus"; + public const string ShowHeader = GroupName + ".Region.Header"; + public const string ShowFooter = GroupName + ".Region.Footer"; + public const string ShowMenu = GroupName + ".Region.Menu"; + public const string ShowMenuHeader = GroupName + ".Region.MenuHeader"; + public const string ColorWeak = GroupName + ".ColorWeak"; +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeSettingDefaults.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeSettingDefaults.cs new file mode 100644 index 0000000..684baae --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application.Contracts/Settings/AntDesignThemeSettingDefaults.cs @@ -0,0 +1,42 @@ +namespace Lsw.Abp.AntDesignThemeManagement.Settings; + +public static class AntDesignThemeSettingDefaults +{ + public const bool EnableThemeSettings = true; + public const bool EnablePageStyleSetting = true; + public const bool EnableNavigationModeSetting = true; + public const bool EnableRegionalSettings = true; + public const bool EnableOtherSettings = true; + + public const string ThemeStyle = ThemeStyles.Light; + public const string NavigationMode = NavigationModes.Side; + public const string ContentWidth = ContentWidths.Fluid; + public const bool FixedHeader = true; + public const bool FixSiderbar = true; + public const bool SplitMenus = false; + public const bool ShowHeader = true; + public const bool ShowFooter = true; + public const bool ShowMenu = true; + public const bool ShowMenuHeader = true; + public const bool ColorWeak = false; +} + +public static class ThemeStyles +{ + public const string Light = "Light"; + public const string Dark = "Dark"; + public const string RealDark = "RealDark"; +} + +public static class NavigationModes +{ + public const string Side = "Side"; + public const string Top = "Top"; + public const string Mix = "Mix"; +} + +public static class ContentWidths +{ + public const string Fluid = "Fluid"; + public const string Fixed = "Fixed"; +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AbpAntDesignThemeManagementApplicationModule.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AbpAntDesignThemeManagementApplicationModule.cs new file mode 100644 index 0000000..4ebcbeb --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AbpAntDesignThemeManagementApplicationModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Modularity; +using Volo.Abp.SettingManagement; + +namespace Lsw.Abp.AntDesignThemeManagement; + +[DependsOn( + typeof(AbpAntDesignThemeManagementApplicationContractsModule), + typeof(AbpSettingManagementApplicationModule) +)] +public class AbpAntDesignThemeManagementApplicationModule : AbpModule +{ +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AntDesignThemePreferenceAppService.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AntDesignThemePreferenceAppService.cs new file mode 100644 index 0000000..1b6223e --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/AntDesignThemePreferenceAppService.cs @@ -0,0 +1,284 @@ +using System; +using System.Threading.Tasks; +using Lsw.Abp.AntDesignThemeManagement.Dtos; +using Lsw.Abp.AntDesignThemeManagement.Permissions; +using Lsw.Abp.AntDesignThemeManagement.Settings; +using Volo.Abp.Application.Services; +using Volo.Abp.Authorization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.SettingManagement; +using Volo.Abp.Settings; + +namespace Lsw.Abp.AntDesignThemeManagement; + +public class AntDesignThemePreferenceAppService : ApplicationService, IAntDesignThemePreferenceAppService +{ + protected ISettingProvider AbpSettingProvider { get; } + protected ISettingManager AbpSettingManager { get; } + protected IPermissionChecker PermissionChecker { get; } + + public AntDesignThemePreferenceAppService( + ISettingProvider settingProvider, + ISettingManager settingManager, + IPermissionChecker permissionChecker) + { + AbpSettingProvider = settingProvider; + AbpSettingManager = settingManager; + PermissionChecker = permissionChecker; + } + + public virtual async Task GetAsync() + { + var preference = new AntDesignThemePreferenceDto + { + ThemeSettingsEnabled = await GetBoolAsync( + AntDesignThemeManagementSettingNames.EnableThemeSettings, + AntDesignThemeSettingDefaults.EnableThemeSettings), + PageStyleSettingEnabled = await GetBoolAsync( + AntDesignThemeManagementSettingNames.EnablePageStyleSetting, + AntDesignThemeSettingDefaults.EnablePageStyleSetting), + NavigationModeSettingEnabled = await GetBoolAsync( + AntDesignThemeManagementSettingNames.EnableNavigationModeSetting, + AntDesignThemeSettingDefaults.EnableNavigationModeSetting), + RegionalSettingsEnabled = await GetBoolAsync( + AntDesignThemeManagementSettingNames.EnableRegionalSettings, + AntDesignThemeSettingDefaults.EnableRegionalSettings), + OtherSettingsEnabled = await GetBoolAsync( + AntDesignThemeManagementSettingNames.EnableOtherSettings, + AntDesignThemeSettingDefaults.EnableOtherSettings), + ThemeStyle = await GetThemeStyleAsync(), + NavigationMode = await GetNavigationModeAsync(), + ContentWidth = await GetContentWidthAsync(), + FixedHeader = await GetBoolAsync( + AntDesignThemeManagementSettingNames.FixedHeader, + AntDesignThemeSettingDefaults.FixedHeader), + FixSiderbar = await GetBoolAsync( + AntDesignThemeManagementSettingNames.FixSiderbar, + AntDesignThemeSettingDefaults.FixSiderbar), + SplitMenus = await GetBoolAsync( + AntDesignThemeManagementSettingNames.SplitMenus, + AntDesignThemeSettingDefaults.SplitMenus), + ShowHeader = await GetBoolAsync( + AntDesignThemeManagementSettingNames.ShowHeader, + AntDesignThemeSettingDefaults.ShowHeader), + ShowFooter = await GetBoolAsync( + AntDesignThemeManagementSettingNames.ShowFooter, + AntDesignThemeSettingDefaults.ShowFooter), + ShowMenu = await GetBoolAsync( + AntDesignThemeManagementSettingNames.ShowMenu, + AntDesignThemeSettingDefaults.ShowMenu), + ShowMenuHeader = await GetBoolAsync( + AntDesignThemeManagementSettingNames.ShowMenuHeader, + AntDesignThemeSettingDefaults.ShowMenuHeader), + ColorWeak = await GetBoolAsync( + AntDesignThemeManagementSettingNames.ColorWeak, + AntDesignThemeSettingDefaults.ColorWeak) + }; + + NormalizeThemeSettingsAvailability(preference); + return preference; + } + + public virtual async Task UpdateAsync(UpdateAntDesignThemePreferenceDto input) + { + if (!CurrentUser.IsAuthenticated) + { + throw new AbpAuthorizationException("Current user must be authenticated."); + } + + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.ThemeStyle, + NormalizeThemeStyle(input.ThemeStyle)); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.NavigationMode, + NormalizeNavigationMode(input.NavigationMode)); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.ContentWidth, + NormalizeContentWidth(input.ContentWidth)); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.FixedHeader, + input.FixedHeader.ToString().ToLowerInvariant()); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.FixSiderbar, + input.FixSiderbar.ToString().ToLowerInvariant()); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.SplitMenus, + input.SplitMenus.ToString().ToLowerInvariant()); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.ShowHeader, + input.ShowHeader.ToString().ToLowerInvariant()); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.ShowFooter, + input.ShowFooter.ToString().ToLowerInvariant()); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.ShowMenu, + input.ShowMenu.ToString().ToLowerInvariant()); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.ShowMenuHeader, + input.ShowMenuHeader.ToString().ToLowerInvariant()); + await AbpSettingManager.SetForCurrentUserAsync( + AntDesignThemeManagementSettingNames.ColorWeak, + input.ColorWeak.ToString().ToLowerInvariant()); + } + + public virtual async Task UpdateThemeSettingsAvailabilityAsync(UpdateAntDesignThemeSettingsAvailabilityDto input) + { + if (!await PermissionChecker.IsGrantedAsync(AntDesignThemeManagementPermissions.Settings)) + { + throw new AbpAuthorizationException("Missing permission to update global theme settings."); + } + + var normalized = NormalizeThemeSettingsAvailability(input); + await SetThemeSettingsAvailabilityAsync(normalized); + } + + public virtual async Task SetThemeSettingsEnabledAsync(bool isEnabled) + { + if (!await PermissionChecker.IsGrantedAsync(AntDesignThemeManagementPermissions.Settings)) + { + throw new AbpAuthorizationException("Missing permission to update global theme settings."); + } + + var normalized = isEnabled + ? new ThemeSettingsAvailability(true, true, true, true, true) + : new ThemeSettingsAvailability(false, false, false, false, false); + + await SetThemeSettingsAvailabilityAsync(normalized); + } + + protected virtual async Task GetThemeStyleAsync() + { + var value = await GetStringAsync( + AntDesignThemeManagementSettingNames.ThemeStyle, + AntDesignThemeSettingDefaults.ThemeStyle); + + return NormalizeThemeStyle(value); + } + + protected virtual async Task GetNavigationModeAsync() + { + var value = await GetStringAsync( + AntDesignThemeManagementSettingNames.NavigationMode, + AntDesignThemeSettingDefaults.NavigationMode); + + return NormalizeNavigationMode(value); + } + + protected virtual async Task GetContentWidthAsync() + { + var value = await GetStringAsync( + AntDesignThemeManagementSettingNames.ContentWidth, + AntDesignThemeSettingDefaults.ContentWidth); + + return NormalizeContentWidth(value); + } + + protected virtual async Task GetStringAsync(string name, string defaultValue) + { + var value = await AbpSettingProvider.GetOrNullAsync(name); + return string.IsNullOrWhiteSpace(value) ? defaultValue : value; + } + + protected virtual async Task GetBoolAsync(string name, bool defaultValue) + { + var value = await AbpSettingProvider.GetOrNullAsync(name); + return bool.TryParse(value, out var parsed) ? parsed : defaultValue; + } + + protected virtual void NormalizeThemeSettingsAvailability(AntDesignThemePreferenceDto preference) + { + var hasAnyEnabledSection = preference.PageStyleSettingEnabled + || preference.NavigationModeSettingEnabled + || preference.RegionalSettingsEnabled + || preference.OtherSettingsEnabled; + + preference.ThemeSettingsEnabled = hasAnyEnabledSection; + } + + protected virtual ThemeSettingsAvailability NormalizeThemeSettingsAvailability( + UpdateAntDesignThemeSettingsAvailabilityDto input) + { + if (!input.ThemeSettingsEnabled) + { + return new ThemeSettingsAvailability(false, false, false, false, false); + } + + var hasAnyEnabledSection = input.PageStyleSettingEnabled + || input.NavigationModeSettingEnabled + || input.RegionalSettingsEnabled + || input.OtherSettingsEnabled; + + if (!hasAnyEnabledSection) + { + // Enabling the root switch should turn on all sub-items by default. + return new ThemeSettingsAvailability(true, true, true, true, true); + } + + return new ThemeSettingsAvailability( + true, + input.PageStyleSettingEnabled, + input.NavigationModeSettingEnabled, + input.RegionalSettingsEnabled, + input.OtherSettingsEnabled + ); + } + + protected virtual async Task SetThemeSettingsAvailabilityAsync(ThemeSettingsAvailability availability) + { + await AbpSettingManager.SetGlobalAsync( + AntDesignThemeManagementSettingNames.EnableThemeSettings, + availability.ThemeSettingsEnabled.ToString().ToLowerInvariant()); + await AbpSettingManager.SetGlobalAsync( + AntDesignThemeManagementSettingNames.EnablePageStyleSetting, + availability.PageStyleSettingEnabled.ToString().ToLowerInvariant()); + await AbpSettingManager.SetGlobalAsync( + AntDesignThemeManagementSettingNames.EnableNavigationModeSetting, + availability.NavigationModeSettingEnabled.ToString().ToLowerInvariant()); + await AbpSettingManager.SetGlobalAsync( + AntDesignThemeManagementSettingNames.EnableRegionalSettings, + availability.RegionalSettingsEnabled.ToString().ToLowerInvariant()); + await AbpSettingManager.SetGlobalAsync( + AntDesignThemeManagementSettingNames.EnableOtherSettings, + availability.OtherSettingsEnabled.ToString().ToLowerInvariant()); + } + + protected virtual string NormalizeThemeStyle(string themeStyle) + { + return themeStyle switch + { + ThemeStyles.Light => ThemeStyles.Light, + ThemeStyles.Dark => ThemeStyles.Dark, + ThemeStyles.RealDark => ThemeStyles.RealDark, + _ => AntDesignThemeSettingDefaults.ThemeStyle + }; + } + + protected virtual string NormalizeNavigationMode(string navigationMode) + { + return navigationMode switch + { + NavigationModes.Side => NavigationModes.Side, + NavigationModes.Top => NavigationModes.Top, + NavigationModes.Mix => NavigationModes.Side, + _ => AntDesignThemeSettingDefaults.NavigationMode + }; + } + + protected virtual string NormalizeContentWidth(string contentWidth) + { + return contentWidth switch + { + ContentWidths.Fluid => ContentWidths.Fluid, + ContentWidths.Fixed => ContentWidths.Fixed, + _ => AntDesignThemeSettingDefaults.ContentWidth + }; + } + + protected record ThemeSettingsAvailability( + bool ThemeSettingsEnabled, + bool PageStyleSettingEnabled, + bool NavigationModeSettingEnabled, + bool RegionalSettingsEnabled, + bool OtherSettingsEnabled + ); +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/FodyWeavers.xml b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/FodyWeavers.xml new file mode 100644 index 0000000..7e9f94e --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/Lsw.Abp.AntDesignThemeManagement.Application.csproj b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/Lsw.Abp.AntDesignThemeManagement.Application.csproj new file mode 100644 index 0000000..75d960a --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Application/Lsw.Abp.AntDesignThemeManagement.Application.csproj @@ -0,0 +1,18 @@ + + + + + + + net10.0 + + + + + + + + + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/AbpAntDesignThemeManagementBlazorServerModule.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/AbpAntDesignThemeManagementBlazorServerModule.cs new file mode 100644 index 0000000..0bc5bfe --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/AbpAntDesignThemeManagementBlazorServerModule.cs @@ -0,0 +1,14 @@ +using Lsw.Abp.AntDesignThemeManagement.Blazor; +using Lsw.Abp.AspnetCore.Components.Server.AntDesignTheme; +using Volo.Abp.Modularity; + +namespace Lsw.Abp.AntDesignThemeManagement.Blazor.Server; + +[DependsOn( + typeof(AbpAntDesignThemeManagementBlazorModule), + typeof(AbpAntDesignThemeManagementApplicationModule), + typeof(AbpAspNetCoreComponentsServerAntDesignThemeModule) +)] +public class AbpAntDesignThemeManagementBlazorServerModule : AbpModule +{ +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/FodyWeavers.xml b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/FodyWeavers.xml new file mode 100644 index 0000000..7e9f94e --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/Lsw.Abp.AntDesignThemeManagement.Blazor.Server.csproj b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/Lsw.Abp.AntDesignThemeManagement.Blazor.Server.csproj new file mode 100644 index 0000000..51205cf --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.Server/Lsw.Abp.AntDesignThemeManagement.Blazor.Server.csproj @@ -0,0 +1,16 @@ + + + + + + + net10.0 + + + + + + + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/AbpAntDesignThemeManagementBlazorWebAssemblyModule.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/AbpAntDesignThemeManagementBlazorWebAssemblyModule.cs new file mode 100644 index 0000000..da8eaf5 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/AbpAntDesignThemeManagementBlazorWebAssemblyModule.cs @@ -0,0 +1,22 @@ +using Lsw.Abp.AntDesignThemeManagement.Blazor; +using Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.IdentityModel.WebAssembly; +using Volo.Abp.Modularity; + +namespace Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly; + +[DependsOn( + typeof(AbpAntDesignThemeManagementBlazorModule), + typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeModule), + typeof(AbpHttpClientIdentityModelWebAssemblyModule) +)] +public class AbpAntDesignThemeManagementBlazorWebAssemblyModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies( + typeof(AbpAntDesignThemeManagementApplicationContractsModule).Assembly); + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/FodyWeavers.xml b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/FodyWeavers.xml new file mode 100644 index 0000000..7e9f94e --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly.csproj b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly.csproj new file mode 100644 index 0000000..de581d3 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly/Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly.csproj @@ -0,0 +1,19 @@ + + + + + + + net10.0 + + + + + + + + + + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/AbpAntDesignThemeManagementBlazorModule.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/AbpAntDesignThemeManagementBlazorModule.cs new file mode 100644 index 0000000..11073df --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/AbpAntDesignThemeManagementBlazorModule.cs @@ -0,0 +1,23 @@ +using Lsw.Abp.AntDesignThemeManagement.Blazor.Settings; +using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme; +using Lsw.Abp.SettingManagement.Blazor.AntDesignUI; +using Volo.Abp.Modularity; +using Volo.Abp.SettingManagement.Blazor; + +namespace Lsw.Abp.AntDesignThemeManagement.Blazor; + +[DependsOn( + typeof(AbpAntDesignThemeManagementApplicationContractsModule), + typeof(AbpAspNetCoreComponentsWebAntDesignThemeModule), + typeof(AbpSettingManagementBlazorAntDesignModule) +)] +public class AbpAntDesignThemeManagementBlazorModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Contributors.Add(new AntDesignThemeManagementSettingContributor()); + }); + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/FodyWeavers.xml b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/FodyWeavers.xml new file mode 100644 index 0000000..7e9f94e --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Lsw.Abp.AntDesignThemeManagement.Blazor.csproj b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Lsw.Abp.AntDesignThemeManagement.Blazor.csproj new file mode 100644 index 0000000..26bc1c0 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Lsw.Abp.AntDesignThemeManagement.Blazor.csproj @@ -0,0 +1,16 @@ + + + + + + + net10.0 + + + + + + + + + diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor new file mode 100644 index 0000000..d06a3ba --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor @@ -0,0 +1,36 @@ +@inherits Volo.Abp.AspNetCore.Components.AbpComponentBase +@using AntDesign +@using Lsw.Abp.AntDesignThemeManagement.Localization + +
+ + @L["Settings:EnableThemeSettings"] + +
+
+
+ + @L["Settings:PageStyleSetting"] + +
+
+ + @L["Settings:NavigationModeSetting"] + +
+
+ + @L["Settings:RegionalSettings"] + +
+
+ + @L["Settings:OtherSettings"] + +
+
+
+ +
diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor.cs new file mode 100644 index 0000000..6854d0c --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Pages/SettingManagement/ThemeSettingsManagementGroup/ThemeSettingsManagementGroupViewComponent.razor.cs @@ -0,0 +1,120 @@ +using System; +using System.Threading.Tasks; +using Lsw.Abp.AntDesignThemeManagement.Dtos; +using Lsw.Abp.AntDesignThemeManagement.Localization; +using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Settings; +using Microsoft.AspNetCore.Components; + +namespace Lsw.Abp.AntDesignThemeManagement.Blazor.Pages.SettingManagement.ThemeSettingsManagementGroup; + +public partial class ThemeSettingsManagementGroupViewComponent +{ + [Inject] + protected IAntDesignThemePreferenceAppService AntDesignThemePreferenceAppService { get; set; } = default!; + + [Inject] + protected IAntDesignSettingsProvider AntDesignSettingsProvider { get; set; } = default!; + + protected bool ThemeSettingsEnabled { get; set; } + protected bool PageStyleSettingEnabled { get; set; } + protected bool NavigationModeSettingEnabled { get; set; } + protected bool RegionalSettingsEnabled { get; set; } + protected bool OtherSettingsEnabled { get; set; } + + public ThemeSettingsManagementGroupViewComponent() + { + LocalizationResource = typeof(AntDesignThemeManagementResource); + } + + protected override async Task OnInitializedAsync() + { + try + { + var preference = await AntDesignThemePreferenceAppService.GetAsync(); + ThemeSettingsEnabled = preference.ThemeSettingsEnabled; + PageStyleSettingEnabled = preference.PageStyleSettingEnabled; + NavigationModeSettingEnabled = preference.NavigationModeSettingEnabled; + RegionalSettingsEnabled = preference.RegionalSettingsEnabled; + OtherSettingsEnabled = preference.OtherSettingsEnabled; + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + + protected virtual void OnThemeSettingsEnabledChanged(bool value) + { + ThemeSettingsEnabled = value; + if (!value) + { + SetAllSubItems(false); + return; + } + + SetAllSubItems(true); + } + + protected virtual void OnPageStyleSettingEnabledChanged(bool value) + { + PageStyleSettingEnabled = value; + SyncRootSwitchByChildren(); + } + + protected virtual void OnNavigationModeSettingEnabledChanged(bool value) + { + NavigationModeSettingEnabled = value; + SyncRootSwitchByChildren(); + } + + protected virtual void OnRegionalSettingsEnabledChanged(bool value) + { + RegionalSettingsEnabled = value; + SyncRootSwitchByChildren(); + } + + protected virtual void OnOtherSettingsEnabledChanged(bool value) + { + OtherSettingsEnabled = value; + SyncRootSwitchByChildren(); + } + + protected virtual async Task SaveAsync() + { + try + { + await AntDesignThemePreferenceAppService.UpdateThemeSettingsAvailabilityAsync( + new UpdateAntDesignThemeSettingsAvailabilityDto + { + ThemeSettingsEnabled = ThemeSettingsEnabled, + PageStyleSettingEnabled = PageStyleSettingEnabled, + NavigationModeSettingEnabled = NavigationModeSettingEnabled, + RegionalSettingsEnabled = RegionalSettingsEnabled, + OtherSettingsEnabled = OtherSettingsEnabled + } + ); + await AntDesignSettingsProvider.TriggerSettingChangedAsync(); + await Message.Success(L["SavedSuccessfully"]); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + + protected virtual void SetAllSubItems(bool enabled) + { + PageStyleSettingEnabled = enabled; + NavigationModeSettingEnabled = enabled; + RegionalSettingsEnabled = enabled; + OtherSettingsEnabled = enabled; + } + + protected virtual void SyncRootSwitchByChildren() + { + ThemeSettingsEnabled = PageStyleSettingEnabled + || NavigationModeSettingEnabled + || RegionalSettingsEnabled + || OtherSettingsEnabled; + } +} diff --git a/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Settings/AntDesignThemeManagementSettingContributor.cs b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Settings/AntDesignThemeManagementSettingContributor.cs new file mode 100644 index 0000000..e5d18f2 --- /dev/null +++ b/modules/AntDesignThemeManagement/Lsw.Abp.AntDesignThemeManagement.Blazor/Settings/AntDesignThemeManagementSettingContributor.cs @@ -0,0 +1,36 @@ +using System.Threading.Tasks; +using Lsw.Abp.AntDesignThemeManagement.Blazor.Pages.SettingManagement.ThemeSettingsManagementGroup; +using Lsw.Abp.AntDesignThemeManagement.Localization; +using Lsw.Abp.AntDesignThemeManagement.Permissions; +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using Volo.Abp.SettingManagement.Blazor; + +namespace Lsw.Abp.AntDesignThemeManagement.Blazor.Settings; + +public class AntDesignThemeManagementSettingContributor : ISettingComponentContributor +{ + public virtual async Task ConfigureAsync(SettingComponentCreationContext context) + { + if (!await CheckPermissionsAsync(context)) + { + return; + } + + var l = context.ServiceProvider.GetRequiredService>(); + context.Groups.Add( + new SettingComponentGroup( + "Lsw.AntDesignThemeManagement", + l["Menu:ThemeSettingsManagement"], + typeof(ThemeSettingsManagementGroupViewComponent) + ) + ); + } + + public virtual async Task CheckPermissionsAsync(SettingComponentCreationContext context) + { + var authorizationService = context.ServiceProvider.GetRequiredService(); + return await authorizationService.IsGrantedAsync(AntDesignThemeManagementPermissions.Settings); + } +} diff --git a/modules/FeatureManagement/Lsw.Abp.FeatureManagement.Blazor.AntDesignUI/Components/FeatureManagementModal.razor b/modules/FeatureManagement/Lsw.Abp.FeatureManagement.Blazor.AntDesignUI/Components/FeatureManagementModal.razor index c6cc91a..f86ca9d 100644 --- a/modules/FeatureManagement/Lsw.Abp.FeatureManagement.Blazor.AntDesignUI/Components/FeatureManagementModal.razor +++ b/modules/FeatureManagement/Lsw.Abp.FeatureManagement.Blazor.AntDesignUI/Components/FeatureManagementModal.razor @@ -64,7 +64,7 @@ { @feature.DisplayName diff --git a/modules/PermissionManagement/Lsw.Abp.PermissionManagement.Blazor.AntDesignUI/Components/PermissionManagementModal.razor b/modules/PermissionManagement/Lsw.Abp.PermissionManagement.Blazor.AntDesignUI/Components/PermissionManagementModal.razor index 9edcf53..33e01c2 100644 --- a/modules/PermissionManagement/Lsw.Abp.PermissionManagement.Blazor.AntDesignUI/Components/PermissionManagementModal.razor +++ b/modules/PermissionManagement/Lsw.Abp.PermissionManagement.Blazor.AntDesignUI/Components/PermissionManagementModal.razor @@ -8,7 +8,7 @@ @if (_visible) { var grantAll = _groups.All(x => x.Permissions.All(p => p.IsGranted)); - @L["SelectAllInAllTabs"] + @L["SelectAllInAllTabs"] @if (_groups != null) @@ -21,7 +21,7 @@

@group.DisplayName

@L["SelectAllInThisTab"] @@ -34,7 +34,7 @@
@GetShownName(permission) diff --git a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/AntDesignThemeGroup/AntDesignThemeGroupViewComponent.razor.cs b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/AntDesignThemeGroup/AntDesignThemeGroupViewComponent.razor.cs index 97b6187..ae93a3f 100644 --- a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/AntDesignThemeGroup/AntDesignThemeGroupViewComponent.razor.cs +++ b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/AntDesignThemeGroup/AntDesignThemeGroupViewComponent.razor.cs @@ -50,7 +50,7 @@ public partial class AntDesignThemeGroupViewComponent private async Task UpdateSettingAsync() { - await AntDesignSettingsProvider.TriggerSettingChanged(); + await AntDesignSettingsProvider.TriggerSettingChangedAsync(); await Notify.Success(L["SuccessfullySaved"]); } diff --git a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor index e57266e..59cfbb9 100644 --- a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor +++ b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor @@ -1,9 +1,10 @@ -@page "/setting-management" +@page "/setting-management" +@using AntDesign @using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme +@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout @using Microsoft.AspNetCore.Authorization @using Microsoft.Extensions.Options @using Volo.Abp.Features -@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout @using Volo.Abp.SettingManagement @attribute [Authorize] @attribute [RequiresFeature(SettingManagementFeatures.Enable)] @@ -12,23 +13,26 @@ -
- +
+
+ +
+ + @foreach (var group in SettingComponentCreationContext.Groups) {

@group.DisplayName

- - @{ - SettingItemRenders.Add(b => - { - b.OpenComponent(0, group.ComponentType); - b.CloseComponent(); - }); - } - @SettingItemRenders.Last() - +
}
diff --git a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor.cs b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor.cs index 372ef6a..454c1c4 100644 --- a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor.cs +++ b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Pages/SettingManagement/SettingManagement.razor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Lsw.Abp.AntDesignUI; using Microsoft.AspNetCore.Components; @@ -25,10 +26,9 @@ public partial class SettingManagement protected SettingManagementComponentOptions Options => _options.Value; - protected List SettingItemRenders { get; set; } = new(); - protected string SelectedGroup { get; set; } protected List BreadcrumbItems = new(); + protected List GroupOptions { get; } = new(); protected override async Task OnInitializedAsync() @@ -41,11 +41,37 @@ public partial class SettingManagement await contributor.ConfigureAsync(SettingComponentCreationContext); } - SettingItemRenders.Clear(); + GroupOptions.Clear(); + foreach (var group in SettingComponentCreationContext.Groups) + { + GroupOptions.Add(new SettingGroupSelectItem + { + Text = group.DisplayName, + Value = GetNormalizedString(group.Id) + }); + } + + if (string.IsNullOrWhiteSpace(SelectedGroup)) + { + SelectedGroup = GroupOptions.FirstOrDefault()?.Value ?? string.Empty; + } } protected virtual string GetNormalizedString(string value) { return value.Replace('.', '_'); } + + protected virtual Task OnSelectedGroupChangedAsync(string value) + { + SelectedGroup = value; + return Task.CompletedTask; + } +} + +public class SettingGroupSelectItem +{ + public string Text { get; set; } = string.Empty; + + public string Value { get; set; } = string.Empty; } diff --git a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Settings/AntDesignSettingDefultPageContributor.cs b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Settings/AntDesignSettingDefultPageContributor.cs index 6d2613a..346e6d7 100644 --- a/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Settings/AntDesignSettingDefultPageContributor.cs +++ b/modules/SettingManagement/Lsw.Abp.SettingManagement.Blazor.AntDesignUI/Settings/AntDesignSettingDefultPageContributor.cs @@ -4,7 +4,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Volo.Abp.Features; using Volo.Abp.MultiTenancy; -using Lsw.Abp.SettingManagement.Blazor.AntDesignUI.Pages.SettingManagement.AntDesignThemeGroup; using Lsw.Abp.SettingManagement.Blazor.AntDesignUI.Pages.SettingManagement.EmailSettingGroup; using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement.Blazor; @@ -30,13 +29,6 @@ public class AntDesignSettingDefultPageContributor : ISettingComponentContributo ) ); - context.Groups.Add( - new SettingComponentGroup( - AntDesignThemeGroupViewComponent.Name, - "Theme", - typeof(AntDesignThemeGroupViewComponent) - ) - ); } public async Task CheckPermissionsAsync(SettingComponentCreationContext context) diff --git a/samples/WebApp/README.md b/samples/WebApp/README.md index 62e752e..bc3665b 100644 --- a/samples/WebApp/README.md +++ b/samples/WebApp/README.md @@ -1,56 +1,58 @@ -# BookStore +# BookStore WebApp Sample -## About this solution +This sample demonstrates the AntDesign theme in ABP Blazor WebApp auto mode. -This is a layered startup solution based on [Domain Driven Design (DDD)](https://abp.io/docs/latest/framework/architecture/domain-driven-design) practises. All the fundamental ABP modules are already installed. Check the [Application Startup Template](https://abp.io/docs/latest/solution-templates/layered-web-application) documentation for more info. +## Prerequisites -### Pre-requirements +- .NET SDK 10.0+ +- Node.js 18 or newer +- MongoDB +- ABP CLI (`dotnet tool install -g Volo.Abp.Cli` if needed) -* [.net10.0+ SDK](https://dotnet.microsoft.com/download/dotnet) -* [Node v18 or 20](https://nodejs.org/en) +## Run -### Configurations +Install front-end libraries: -The solution comes with a default configuration that works out of the box. However, you may consider to change the following configuration before running your solution: - - -### Before running the application - -* Run `abp install-libs` command on your solution folder to install client-side package dependencies. This step is automatically done when you create a new solution, if you didn't especially disabled it. However, you should run it yourself if you have first cloned this solution from your source control, or added a new client-side package dependency to your solution. -* Run `BookStore.DbMigrator` to create the initial database. This step is also automatically done when you create a new solution, if you didn't especially disabled it. This should be done in the first run. It is also needed if a new database migration is added to the solution later. - -#### Generating a Signing Certificate - -In the production environment, you need to use a production signing certificate. ABP Framework sets up signing and encryption certificates in your application and expects an `openiddict.pfx` file in your application. +```bash +abp install-libs +``` -To generate a signing certificate, you can use the following command: +Apply database migrations and seed data: ```bash -dotnet dev-certs https -v -ep openiddict.pfx -p b0859b18-d774-4576-aad2-c49c1a9dc2ef +dotnet run --project .\src\BookStore.DbMigrator\ ``` -> `b0859b18-d774-4576-aad2-c49c1a9dc2ef` is the password of the certificate, you can change it to any password you want. - -It is recommended to use **two** RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. +Start the WebApp host: -For more information, please refer to: [OpenIddict Certificate Configuration](https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios) +```bash +dotnet run --project .\src\BookStore.Blazor\ +``` -> Also, see the [Configuring OpenIddict](https://abp.io/docs/latest/Deployment/Configuring-OpenIddict#production-environment) documentation for more information. +Open `https://localhost:44320`. -### Solution structure +## Default Login -This is a layered monolith application that consists of the following applications: +- Username: `admin` +- Password: `1q2w3E*` -* `BookStore.DbMigrator`: A console application which applies the migrations and also seeds the initial data. It is useful on development as well as on production environment. +## What To Verify +- The application uses the refactored AntDesign Pro-style layout. +- The sidebar is responsive and can collapse on smaller screens. +- Authenticated users can open the floating theme settings panel. +- Theme settings apply immediately without restarting the application. -## Deploying the application +## Theme Settings Management -Deploying an ABP application follows the same process as deploying any .NET or ASP.NET Core application. However, there are important considerations to keep in mind. For detailed guidance, refer to ABP's [deployment documentation](https://abp.io/docs/latest/Deployment/Index). +This sample is configured with `AntDesignThemeManagement`. -### Additional resources +Go to `Administration -> Settings -> Theme settings management` to control which sections appear in the user-facing panel: -You can see the following resources to learn more about your solution and the ABP Framework: +- `Enable theme settings` +- `Page style setting` +- `Navigation mode` +- `Regional settings` +- `Other settings` -* [Web Application Development Tutorial](https://abp.io/docs/latest/tutorials/book-store/part-1) -* [Application Startup Template](https://abp.io/docs/latest/startup-templates/application/index) +If all child options are disabled, `Enable theme settings` is automatically disabled. diff --git a/samples/WebApp/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj b/samples/WebApp/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj index 670f54f..684c61e 100644 --- a/samples/WebApp/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj +++ b/samples/WebApp/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj @@ -22,6 +22,7 @@ + diff --git a/samples/WebApp/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs b/samples/WebApp/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs index d6f2cf7..3ff3922 100644 --- a/samples/WebApp/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs +++ b/samples/WebApp/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs @@ -14,6 +14,7 @@ using Volo.Abp.Mapperly; using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; using Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme; +using Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly; using Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI; using Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI; using Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI; @@ -33,6 +34,7 @@ namespace BookStore.Blazor.Client; typeof(AbpIdentityBlazorWebAssemblyAntDesignModule), typeof(AbpTenantManagementBlazorWebAssemblyAntDesignModule), typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeModule), + typeof(AbpAntDesignThemeManagementBlazorWebAssemblyModule), typeof(AbpAutofacWebAssemblyModule), typeof(AbpMapperlyModule), typeof(BookStoreHttpApiClientModule) diff --git a/samples/WebApp/src/BookStore.Blazor/BookStore.Blazor.csproj b/samples/WebApp/src/BookStore.Blazor/BookStore.Blazor.csproj index 2c48fa8..03673b8 100644 --- a/samples/WebApp/src/BookStore.Blazor/BookStore.Blazor.csproj +++ b/samples/WebApp/src/BookStore.Blazor/BookStore.Blazor.csproj @@ -37,6 +37,7 @@ + diff --git a/samples/WebApp/src/BookStore.Blazor/BookStoreBlazorModule.cs b/samples/WebApp/src/BookStore.Blazor/BookStoreBlazorModule.cs index a22f8d1..cdcc209 100644 --- a/samples/WebApp/src/BookStore.Blazor/BookStoreBlazorModule.cs +++ b/samples/WebApp/src/BookStore.Blazor/BookStoreBlazorModule.cs @@ -15,7 +15,7 @@ using BookStore.Blazor.Client.Navigation; using BookStore.MongoDB; using BookStore.Localization; using BookStore.MultiTenancy; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Microsoft.Extensions.Options; using BookStore.Blazor.Client; using BookStore.Blazor.Components; @@ -45,6 +45,8 @@ using Volo.Abp.Identity; using Volo.Abp.OpenIddict; using Volo.Abp.Account.Web; using Lsw.Abp.IdentityManagement.Blazor.Server.AntDesignUI; +using Lsw.Abp.AntDesignThemeManagement.Blazor.Server; +using Lsw.Abp.AntDesignThemeManagement; using Lsw.Abp.TenantManagement.Blazor.Server.AntDesignUI; namespace BookStore.Blazor; @@ -57,6 +59,7 @@ namespace BookStore.Blazor; typeof(AbpSwashbuckleModule), typeof(AbpIdentityBlazorServerAntDesignModule), typeof(AbpTenantManagementBlazorServerAntDesignModule), + typeof(AbpAntDesignThemeManagementBlazorServerModule), typeof(AbpAccountWebOpenIddictModule), //typeof(AbpAspNetCoreComponentsServerLeptonXLiteThemeModule), typeof(AbpAspNetCoreComponentsServerAntDesignThemeModule), @@ -271,6 +274,7 @@ public class BookStoreBlazorModule : AbpModule Configure(options => { options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + options.ConventionalControllers.Create(typeof(AbpAntDesignThemeManagementApplicationModule).Assembly); }); } diff --git a/samples/WebApp/src/BookStore.Blazor/package-lock.json b/samples/WebApp/src/BookStore.Blazor/package-lock.json index d671d9a..f286753 100644 --- a/samples/WebApp/src/BookStore.Blazor/package-lock.json +++ b/samples/WebApp/src/BookStore.Blazor/package-lock.json @@ -1,1733 +1,990 @@ { "name": "my-app", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, - "dependencies": { - "@abp/aspnetcore.mvc.ui": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.2.1.tgz", - "integrity": "sha512-/a/KDVQ3EuETSSe+KqmsR24w6RWHvaokvmmOjL+tCpFQyeaYAZ88E9pvM5hC9HVR24FCHTiARiXwgMTw2eZFyQ==", - "requires": { - "ansi-colors": "^4.1.1", - "extend-object": "^1.0.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "gulp": "^4.0.2", - "merge-stream": "^2.0.0", - "micromatch": "^4.0.2", - "path": "^0.12.7" - } - }, - "@abp/aspnetcore.mvc.ui.theme.basic": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.2.1.tgz", - "integrity": "sha512-Tb0g4mtdSsjQkadvnjjRjObEhweUvigto0BTv5SzRNi0oQLW8ZVUcFmuMWB09nJAIPrbuA3QuPUlXzFcv2gsdg==", - "requires": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~4.2.1" + "packages": { + "": { + "name": "my-app", + "version": "1.0.0", + "dependencies": { + "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0", + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0" } }, - "@abp/aspnetcore.mvc.ui.theme.shared": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.2.1.tgz", - "integrity": "sha512-+f54CysWpEKfxjIIjhnTKW0jJ0Rg+wS6yxb9Rg3qxA5iEUkxp3B+NB5wA9rT5YcY9APrwVpiw1miNRmq5ZvFXg==", - "requires": { - "@abp/aspnetcore.mvc.ui": "~4.2.1", - "@abp/bootstrap": "~4.2.1", - "@abp/bootstrap-datepicker": "~4.2.1", - "@abp/datatables.net-bs4": "~4.2.1", - "@abp/font-awesome": "~4.2.1", - "@abp/jquery-form": "~4.2.1", - "@abp/jquery-validation-unobtrusive": "~4.2.1", - "@abp/lodash": "~4.2.1", - "@abp/luxon": "~4.2.1", - "@abp/malihu-custom-scrollbar-plugin": "~4.2.1", - "@abp/select2": "~4.2.1", - "@abp/sweetalert": "~4.2.1", - "@abp/timeago": "~4.2.1", - "@abp/toastr": "~4.2.1" - } - }, - "@abp/bootstrap": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-4.2.1.tgz", - "integrity": "sha512-1Z4atDgHDxesjBh5uPb442NALcUucS2Lt56CaN5UPBXQvAPr72cw4hfKbW08KJ0ab7WME0uCi1vYZFM28/zqTg==", - "requires": { - "@abp/core": "~4.2.1", - "bootstrap": "^4.5.0", - "bootstrap-v4-rtl": "4.4.1-2" + "node_modules/@abp/aspnetcore.components.server.leptonxlitetheme": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-5.3.0.tgz", + "integrity": "sha512-rSkFUgDJiZQ/cKs20AVwyb1YS9KtUwP+OiG4Mr+zIst+GMsLOfK7ZBMd6qlGFN+0dQWVt89EfYckOJimsNE9xg==", + "dependencies": { + "@abp/aspnetcore.components.server.theming": "~10.3.0" } }, - "@abp/bootstrap-datepicker": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.2.1.tgz", - "integrity": "sha512-35uaM+OBUqsBBIF08NUu7XBVIgwVQIjJard92Px7eR0EJ2AW6f5hNlJQYfPkYVdmkPIpG16qWctICB+L2W3ZKA==", - "requires": { - "bootstrap-datepicker": "^1.9.0" + "node_modules/@abp/aspnetcore.components.server.theming": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-10.3.0.tgz", + "integrity": "sha512-s9MtBQHL5GQAHrZCRczgd0HOWM1++ImeEytT6/znaQRf4iEsR91+MxZdsfuuW4apBJwNO2QqCGefKTmzpxUBzg==", + "dependencies": { + "@abp/bootstrap": "~10.3.0", + "@abp/font-awesome": "~10.3.0" } }, - "@abp/core": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/core/-/core-4.2.1.tgz", - "integrity": "sha512-EiJSgUytS9Mrv8GZr9pwIzxwlrP82hEcS67cAgDxBc4QOhtMXhGZBMjDBHoIkOt6Db/ua0iPC700w0Utt5kWZQ==", - "requires": { - "@abp/utils": "^4.2.1" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", + "dependencies": { + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" } }, - "@abp/datatables.net": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-4.2.1.tgz", - "integrity": "sha512-ZxpSW6PhJupjecTC25MEKTdjePvg2xNouqioL9L7V3lPJ6S3fsqNs9QFjFjpv0vltzXMaZgJTSuxilmR6s6piw==", - "requires": { - "@abp/jquery": "~4.2.1", - "datatables.net": "^1.10.21" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "dependencies": { + "@abp/utils": "~10.3.0" } }, - "@abp/datatables.net-bs4": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs4/-/datatables.net-bs4-4.2.1.tgz", - "integrity": "sha512-T66P74F58n4P5xwfhekriSr66A35okrXw61mlMXqeet8ACtxiM55MhXw89qvsL0qo5qG/a9d9MWPYNmZgXvKSQ==", - "requires": { - "@abp/datatables.net": "~4.2.1", - "datatables.net-bs4": "^1.10.21" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", + "dependencies": { + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "@abp/font-awesome": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-4.2.1.tgz", - "integrity": "sha512-kWAOqN7OtiBA7gd3VLH7pft1A5KYnJGJCn56xoqWIqLyHrSapwI5IMOojRDr+WhQJXk5EGE+rnmqRP51MYo4NQ==", - "requires": { - "@abp/core": "~4.2.1", - "@fortawesome/fontawesome-free": "^5.13.0" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "dependencies": { + "just-compare": "^2.3.0" } }, - "@abp/jquery": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-4.2.1.tgz", - "integrity": "sha512-xcoSu/2qc2AEF+dCTNHTCWjAo1dIcohHVPM3Yh36bb+JEcnruYYRokqZc4pzkh0GQamE1eMVGi3QOAmuURtbCg==", - "requires": { - "@abp/core": "~4.2.1", - "jquery": "~3.5.1" - }, - "dependencies": { - "jquery": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", - "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" - } + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==", + "engines": { + "node": ">=6" } }, - "@abp/jquery-form": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-4.2.1.tgz", - "integrity": "sha512-xnxaaOExhz7/8/P6XGvQuKitpuVjzoZz+r1Kr+W9gVy0dWZcCOfeVi4kdpxDFpqUmQJQJi0tvdVkFHx/hAkB7g==", - "requires": { - "@abp/jquery": "~4.2.1", - "jquery-form": "^4.3.0" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" } }, - "@abp/jquery-validation": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-4.2.1.tgz", - "integrity": "sha512-g87I0nO7Jk2d4Jt7PlLk/bHu5xQFH4+mbHwH4oRLAzflDhRNtNB+uVF35HK/1shprmSlZt6X+bHz652SEqD81g==", - "requires": { - "@abp/jquery": "~4.2.1", - "jquery-validation": "^1.19.2" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-5.3.0.tgz", + "integrity": "sha512-gB+Vczz5ZY7wOUjGWgJdcFbhbFRG4nOH/5HMpXWtBxuigapjoofubrgDqVVsOzVtremDRy/uUZomYlEdWiTpQg==", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0" } }, - "@abp/jquery-validation-unobtrusive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.2.1.tgz", - "integrity": "sha512-STuVKdSUNjrW3q30GcszgzecHDdPmL3aA0jPsRJr0S2Wp5CQOe0dB7d5xyAnADIL68cPXjZWlz1OyXSQ2LixeQ==", - "requires": { - "@abp/jquery-validation": "~4.2.1", - "jquery-validation-unobtrusive": "^3.2.11" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/aspnetcore.mvc.ui": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz", + "integrity": "sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==", + "dependencies": { + "ansi-colors": "^4.1.3" } }, - "@abp/lodash": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-4.2.1.tgz", - "integrity": "sha512-hDwzR/Q9GqXPdQaijQ3B4GIWZ8z9clCW9vU59qbELD8xBZIJalTSrUGnIT8YNB9O5tNFb2FWJJbw5Nh8K7lu1A==", - "requires": { - "@abp/core": "~4.2.1", - "lodash": "^4.17.15" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz", + "integrity": "sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==", + "dependencies": { + "@abp/aspnetcore.mvc.ui": "~10.3.0", + "@abp/bootstrap": "~10.3.0", + "@abp/bootstrap-datepicker": "~10.3.0", + "@abp/bootstrap-daterangepicker": "~10.3.0", + "@abp/datatables.net-bs5": "~10.3.0", + "@abp/font-awesome": "~10.3.0", + "@abp/jquery-validation-unobtrusive": "~10.3.0", + "@abp/lodash": "~10.3.0", + "@abp/luxon": "~10.3.0", + "@abp/malihu-custom-scrollbar-plugin": "~10.3.0", + "@abp/moment": "~10.3.0", + "@abp/select2": "~10.3.0", + "@abp/sweetalert2": "~10.3.0", + "@abp/timeago": "~10.3.0" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", + "dependencies": { + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" } }, - "@abp/luxon": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-4.2.1.tgz", - "integrity": "sha512-Sussnocvw75EbJ1j0Ohn7F+SBQy9xPbiG6RJExdDFzxhUNsVp5wJF2Jm8hOZB3DYkeGAOskY5RoIG0abfE/j3w==", - "requires": { - "@abp/core": "~4.2.1", - "luxon": "^1.24.1" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/bootstrap-datepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz", + "integrity": "sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==", + "dependencies": { + "bootstrap-datepicker": "^1.10.1" } }, - "@abp/malihu-custom-scrollbar-plugin": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.2.1.tgz", - "integrity": "sha512-qBnBMzj4G/dAMShmF4EXr55hkMehC1+cB6Jjl1wPHgMV8QPafznBKGyM6KWxGhrl8K6nCErBbidgQKpYqtWhNA==", - "requires": { - "@abp/core": "~4.2.1", - "malihu-custom-scrollbar-plugin": "^3.1.5" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "dependencies": { + "@abp/utils": "~10.3.0" } }, - "@abp/select2": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-4.2.1.tgz", - "integrity": "sha512-g1AUGof5daULbVFCokR9JS1/4gIpEWKB5/+rRJBmnje2hUgBA3llD5PCOh5WRHA7urJJOD/5BjWlFdozluUAyg==", - "requires": { - "@abp/core": "~4.2.1", - "select2": "^4.0.13" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", + "dependencies": { + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "@abp/sweetalert": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/sweetalert/-/sweetalert-4.2.1.tgz", - "integrity": "sha512-xTi0oSjAkFMIDHgF8YB+oqFCl4gNfnt7mGHvEjJwpCEQSkuML9QsiGvw1TpXyHP7npOWSjjVpoyEBS2HXC778Q==", - "requires": { - "@abp/core": "~4.2.1", - "sweetalert": "^2.1.2" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", + "dependencies": { + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" } }, - "@abp/timeago": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-4.2.1.tgz", - "integrity": "sha512-46+2plKizUcRn2VWN5WPWvwEVz+xoKOmsH1tEJ8WKKNxjeNRAsfeOslbfIEks89hTXLQemP3txAbq9V3E8pwQw==", - "requires": { - "@abp/jquery": "~4.2.1", - "timeago": "^1.6.7" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/jquery-validation": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz", + "integrity": "sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==", + "dependencies": { + "@abp/jquery": "~10.3.0", + "jquery-validation": "^1.21.0" } }, - "@abp/toastr": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-4.2.1.tgz", - "integrity": "sha512-fdlMZjffEO/05aeG8BjTspARKGtUu2SpoFViTeHGhSPsCW55BvuehIgRhyOEQNfMqJz8m0cVR0R2q+WPFWf1XA==", - "requires": { - "@abp/jquery": "~4.2.1", - "toastr": "^2.1.4" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/jquery-validation-unobtrusive": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz", + "integrity": "sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==", + "dependencies": { + "@abp/jquery-validation": "~10.3.0", + "jquery-validation-unobtrusive": "^4.0.0" } }, - "@abp/utils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-4.2.1.tgz", - "integrity": "sha512-V7XYC38u4C+UpXQr28KA1KHL5nNgDsFHfZULPnkwPxV8DuhzemmPYN3qmSXi5hfSfp+psNCX3GYZRMCI57kHgQ==", - "requires": { - "just-compare": "^1.3.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/lodash": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-10.3.0.tgz", + "integrity": "sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==", + "dependencies": { + "@abp/core": "~10.3.0", + "lodash": "^4.17.21" } }, - "@fortawesome/fontawesome-free": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.2.tgz", - "integrity": "sha512-7l/AX41m609L/EXI9EKH3Vs3v0iA8tKlIOGtw+kgcoanI7p+e4I4GYLqW3UXWiTnjSFymKSmTTPKYrivzbxxqA==" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/luxon": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-10.3.0.tgz", + "integrity": "sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==", + "dependencies": { + "@abp/core": "~10.3.0", + "luxon": "^3.7.2" + } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "requires": { - "ansi-wrap": "0.1.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/malihu-custom-scrollbar-plugin": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz", + "integrity": "sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==", + "dependencies": { + "@abp/core": "~10.3.0", + "malihu-custom-scrollbar-plugin": "^3.1.5" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/select2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-10.3.0.tgz", + "integrity": "sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==", + "dependencies": { + "@abp/core": "~10.3.0", + "select2": "^4.0.13" + } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/timeago": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-10.3.0.tgz", + "integrity": "sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==", + "dependencies": { + "@abp/jquery": "~10.3.0", + "timeago": "^1.6.7" + } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "just-compare": "^2.3.0" } }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "requires": { - "buffer-equal": "^1.0.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==", + "engines": { + "node": ">=6" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } }, - "arr-diff": { + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/jquery-validation-unobtrusive": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "requires": { - "make-iterator": "^1.0.0" + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz", + "integrity": "sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ==", + "dependencies": { + "jquery": "^3.6.0", + "jquery-validation": ">=1.19" } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "requires": { - "make-iterator": "^1.0.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "engines": { + "node": ">=12" } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, + "node_modules/@abp/bootstrap-daterangepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz", + "integrity": "sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==", "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } + "@abp/moment": "~10.3.0", + "bootstrap-daterangepicker": "^3.1.0" } }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "requires": { - "is-number": "^4.0.0" - }, + "node_modules/@abp/datatables.net-bs5": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz", + "integrity": "sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==", "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } + "@abp/datatables.net": "~10.3.0", + "datatables.net-bs5": "^2.3.4" } }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "@abp/utils": "~10.3.0" } }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/datatables.net": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-10.3.0.tgz", + "integrity": "sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==", + "dependencies": { + "@abp/jquery": "~10.3.0", + "datatables.net": "^2.3.4" } }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "requires": { - "async-done": "^1.2.2" + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", + "dependencies": { + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" } }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "just-compare": "^2.3.0" } }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" + "node_modules/@abp/datatables.net-bs5/node_modules/datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", + "dependencies": { + "jquery": ">=1.7" } }, - "bootstrap": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", - "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" + "node_modules/@abp/datatables.net-bs5/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" }, - "bootstrap-datepicker": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.9.0.tgz", - "integrity": "sha512-9rYYbaVOheGYxjOr/+bJCmRPihfy+LkLSg4fIFMT9Od8WwWB/MB50w0JO1eBgKUMbb7PFHQD5uAfI3ArAxZRXA==", - "requires": { - "jquery": ">=1.7.1 <4.0.0" + "node_modules/@abp/moment": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-10.3.0.tgz", + "integrity": "sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==", + "dependencies": { + "moment": "^2.30.1" } }, - "bootstrap-v4-rtl": { - "version": "4.4.1-2", - "resolved": "https://registry.npmjs.org/bootstrap-v4-rtl/-/bootstrap-v4-rtl-4.4.1-2.tgz", - "integrity": "sha512-x9jZLEQzeOlkfxnR73aE/LjTD6hlqU6BbKVKdGasDByEP7dHBaxYaDGX54pfpHTom2QFqQ3t6y0WkDZW6DrQhw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@abp/popper.js": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/popper.js/-/popper.js-10.3.0.tgz", + "integrity": "sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==", + "dependencies": { + "@abp/core": "~10.3.0", + "@popperjs/core": "^2.11.8" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, + "node_modules/@abp/popper.js/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "@abp/utils": "~10.3.0" } }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "node_modules/@abp/popper.js/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "dependencies": { + "just-compare": "^2.3.0" } }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "node_modules/@abp/popper.js/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, + "node_modules/@abp/sweetalert2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz", + "integrity": "sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==", "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } + "@abp/core": "~10.3.0", + "sweetalert2": "^11.23.0" } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "node_modules/@abp/sweetalert2/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "dependencies": { + "@abp/utils": "~10.3.0" } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "node_modules/@abp/sweetalert2/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "dependencies": { + "just-compare": "^2.3.0" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "node_modules/@abp/sweetalert2/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/bootstrap-datepicker": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.1.tgz", + "integrity": "sha512-GIe+fsLp9Hi30oW7L2v2Q9/a4+aojrIA2p4ZagtLuKw2lpfQgjJjM0L6vl/lYQydGXWUbpoKbEC/O5tzWIkEKQ==", + "dependencies": { + "jquery": ">=3.4.0 <4.0.0" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "node_modules/bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" } }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "node_modules/datatables.net-bs5": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.8.tgz", + "integrity": "sha512-TbFH99QSWm93Kn3teHLFKeyOqYbaiddlHvRFdXUwAvh/fjTMhACWmHG+I43ss8d23OEFHV0WIbN4lpPusZm5zw==", + "dependencies": { + "datatables.net": "2.3.8", + "jquery": ">=1.7" } }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" + "node_modules/datatables.net-bs5/node_modules/datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", + "dependencies": { + "jquery": ">=1.7" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "node_modules/jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "node_modules/jquery-validation": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.22.1.tgz", + "integrity": "sha512-ePLXLWK7Rh5eR652YsuIu7YPeGlCXrsJUteVw5iZopiU17yaMd3FaDggs6yyNMl56p8TYVeDRmKGK3fPZrMeQw==", + "peerDependencies": { + "jquery": "^1.7 || ^2.0 || ^3.1 || ^4.0" } }, - "datatables.net": { - "version": "1.10.23", - "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.23.tgz", - "integrity": "sha512-we3tlNkzpxvgkKKlTxTMXPCt35untVXNg8zUYWpQyC1U5vJc+lT0+Zdc1ztK8d3lh5CfdnuFde2p8n3XwaGl3Q==", - "requires": { - "jquery": ">=1.7" - } + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" }, - "datatables.net-bs4": { - "version": "1.10.23", - "resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.10.23.tgz", - "integrity": "sha512-ChUB8t5t5uzPnJYTPXx2DOvnlm2shz8OadXrKoFavOadB308OuwHVxSldYq9+KGedCeiVxEjNqcaV4nFSXkRsw==", - "requires": { - "datatables.net": "1.10.23", - "jquery": ">=1.7" + "node_modules/malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha1-MQzsxeWUFaHCnp37XStuAdZqKe8=", + "dependencies": { + "jquery-mousewheel": ">=3.0.6" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "node_modules/sweetalert2": { + "version": "11.26.24", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.26.24.tgz", + "integrity": "sha512-SLgukW4wicewpW5VOukSXY5Z6DL/z7HCOK2ODSjmQPiSphCN8gJAmh9npoceXOtBRNoDN0xIz+zHYthtfiHmjg==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "requires": { - "kind-of": "^5.0.2" - }, + "node_modules/timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "jquery": ">=1.5.0 <4.0" } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + } + }, + "dependencies": { + "@abp/aspnetcore.components.server.leptonxlitetheme": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-5.3.0.tgz", + "integrity": "sha512-rSkFUgDJiZQ/cKs20AVwyb1YS9KtUwP+OiG4Mr+zIst+GMsLOfK7ZBMd6qlGFN+0dQWVt89EfYckOJimsNE9xg==", "requires": { - "object-keys": "^1.0.12" + "@abp/aspnetcore.components.server.theming": "~10.3.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "@abp/aspnetcore.components.server.theming": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-10.3.0.tgz", + "integrity": "sha512-s9MtBQHL5GQAHrZCRczgd0HOWM1++ImeEytT6/znaQRf4iEsR91+MxZdsfuuW4apBJwNO2QqCGefKTmzpxUBzg==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "@abp/bootstrap": "~10.3.0", + "@abp/font-awesome": "~10.3.0" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", + "requires": { + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" + } + }, + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "requires": { - "kind-of": "^6.0.0" + "@abp/utils": "~10.3.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", "requires": { - "kind-of": "^6.0.0" + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "just-compare": "^2.3.0" } + }, + "@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==" + }, + "bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "requires": {} + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-5.3.0.tgz", + "integrity": "sha512-gB+Vczz5ZY7wOUjGWgJdcFbhbFRG4nOH/5HMpXWtBxuigapjoofubrgDqVVsOzVtremDRy/uUZomYlEdWiTpQg==", "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "@abp/aspnetcore.mvc.ui": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz", + "integrity": "sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==", "requires": { - "is-descriptor": "^0.1.0" + "ansi-colors": "^4.1.3" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz", + "integrity": "sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==", "requires": { - "is-extendable": "^0.1.0" + "@abp/aspnetcore.mvc.ui": "~10.3.0", + "@abp/bootstrap": "~10.3.0", + "@abp/bootstrap-datepicker": "~10.3.0", + "@abp/bootstrap-daterangepicker": "~10.3.0", + "@abp/datatables.net-bs5": "~10.3.0", + "@abp/font-awesome": "~10.3.0", + "@abp/jquery-validation-unobtrusive": "~10.3.0", + "@abp/lodash": "~10.3.0", + "@abp/luxon": "~10.3.0", + "@abp/malihu-custom-scrollbar-plugin": "~10.3.0", + "@abp/moment": "~10.3.0", + "@abp/select2": "~10.3.0", + "@abp/sweetalert2": "~10.3.0", + "@abp/timeago": "~10.3.0" } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", - "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", - "integrity": "sha1-QlFPhAFdE1bK9Rh5ad+yvBvaCCM=" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + }, + "@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", "requires": { - "is-plain-object": "^2.0.4" + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + }, + "@abp/bootstrap-datepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz", + "integrity": "sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==", "requires": { - "is-descriptor": "^1.0.0" + "bootstrap-datepicker": "^1.10.1" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "requires": { - "is-extendable": "^0.1.0" + "@abp/utils": "~10.3.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", "requires": { - "kind-of": "^6.0.0" + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", "requires": { - "kind-of": "^6.0.0" + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "@abp/jquery-validation": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz", + "integrity": "sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@abp/jquery": "~10.3.0", + "jquery-validation": "^1.21.0" } - } - } - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + }, + "@abp/jquery-validation-unobtrusive": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz", + "integrity": "sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==", "requires": { - "is-extendable": "^0.1.0" + "@abp/jquery-validation": "~10.3.0", + "jquery-validation-unobtrusive": "^4.0.0" } - } - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + }, + "@abp/lodash": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-10.3.0.tgz", + "integrity": "sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "@abp/core": "~10.3.0", + "lodash": "^4.17.21" } - } - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "^1.0.1" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + }, + "@abp/luxon": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-10.3.0.tgz", + "integrity": "sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==", "requires": { - "is-extglob": "^2.1.0" + "@abp/core": "~10.3.0", + "luxon": "^3.7.2" } - } - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + }, + "@abp/malihu-custom-scrollbar-plugin": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz", + "integrity": "sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==", "requires": { - "ansi-wrap": "^0.1.0" + "@abp/core": "~10.3.0", + "malihu-custom-scrollbar-plugin": "^3.1.5" } }, - "gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "@abp/select2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-10.3.0.tgz", + "integrity": "sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==", "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" + "@abp/core": "~10.3.0", + "select2": "^4.0.13" } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "requires": { - "glogg": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { + }, + "@abp/timeago": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-10.3.0.tgz", + "integrity": "sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==", + "requires": { + "@abp/jquery": "~10.3.0", + "timeago": "^1.6.7" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "requires": { + "just-compare": "^2.3.0" + } + }, + "@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==" + }, + "bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "requires": {} + }, + "jquery-validation-unobtrusive": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz", + "integrity": "sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ==", "requires": { - "is-buffer": "^1.1.5" + "jquery": "^3.6.0", + "jquery-validation": ">=1.19" } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + }, + "luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==" } } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "@abp/bootstrap-daterangepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz", + "integrity": "sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==", "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "@abp/moment": "~10.3.0", + "bootstrap-daterangepicker": "^3.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "@abp/datatables.net-bs5": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz", + "integrity": "sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==", "requires": { - "kind-of": "^3.0.2" + "@abp/datatables.net": "~10.3.0", + "datatables.net-bs5": "^2.3.4" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "requires": { + "@abp/utils": "~10.3.0" + } + }, + "@abp/datatables.net": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-10.3.0.tgz", + "integrity": "sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==", + "requires": { + "@abp/jquery": "~10.3.0", + "datatables.net": "^2.3.4" + } + }, + "@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", + "requires": { + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "requires": { + "just-compare": "^2.3.0" + } + }, + "datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", "requires": { - "is-buffer": "^1.1.5" + "jquery": ">=1.7" } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "@abp/moment": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-10.3.0.tgz", + "integrity": "sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==", "requires": { - "has": "^1.0.3" + "moment": "^2.30.1" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "@abp/popper.js": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/popper.js/-/popper.js-10.3.0.tgz", + "integrity": "sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==", "requires": { - "kind-of": "^3.0.2" + "@abp/core": "~10.3.0", + "@popperjs/core": "^2.11.8" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "requires": { + "@abp/utils": "~10.3.0" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "requires": { - "is-buffer": "^1.1.5" + "just-compare": "^2.3.0" } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "@abp/sweetalert2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz", + "integrity": "sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@abp/core": "~10.3.0", + "sweetalert2": "^11.23.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "requires": { + "@abp/utils": "~10.3.0" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "requires": { + "just-compare": "^2.3.0" + } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bootstrap-datepicker": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.1.tgz", + "integrity": "sha512-GIe+fsLp9Hi30oW7L2v2Q9/a4+aojrIA2p4ZagtLuKw2lpfQgjJjM0L6vl/lYQydGXWUbpoKbEC/O5tzWIkEKQ==", "requires": { - "number-is-nan": "^1.0.0" + "jquery": ">=3.4.0 <4.0.0" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", "requires": { - "is-extglob": "^2.1.1" + "jquery": ">=1.10", + "moment": "^2.9.0" } }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "datatables.net-bs5": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.8.tgz", + "integrity": "sha512-TbFH99QSWm93Kn3teHLFKeyOqYbaiddlHvRFdXUwAvh/fjTMhACWmHG+I43ss8d23OEFHV0WIbN4lpPusZm5zw==", "requires": { - "kind-of": "^3.0.2" + "datatables.net": "2.3.8", + "jquery": ">=1.7" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", "requires": { - "is-buffer": "^1.1.5" + "jquery": ">=1.7" } } } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, "jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" - }, - "jquery-form": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", - "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", - "requires": { - "jquery": ">=1.7.2" - } + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, "jquery-mousewheel": { "version": "3.1.13", @@ -1735,125 +992,15 @@ "integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" }, "jquery-validation": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.19.3.tgz", - "integrity": "sha512-iXxCS5W7STthSTMFX/NDZfWHBLbJ1behVK3eAgHXAV8/0vRa9M4tiqHvJMr39VGWHMGdlkhrtrkBuaL2UlE8yw==" - }, - "jquery-validation-unobtrusive": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", - "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", - "requires": { - "jquery": "^3.5.1", - "jquery-validation": ">=1.16" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "just-compare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.3.0.tgz", - "integrity": "sha512-i4QNo3mPYubDmAwPbCKQl5C2b5s0yudP5V5GDp6lGR1PM22Em4Idf7mcaIzXYcL6/RLdZtuGrAqkBe9RYM/t4w==" - }, - "just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.22.1.tgz", + "integrity": "sha512-ePLXLWK7Rh5eR652YsuIu7YPeGlCXrsJUteVw5iZopiU17yaMd3FaDggs6yyNMl56p8TYVeDRmKGK3fPZrMeQw==", + "requires": {} }, "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "luxon": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.26.0.tgz", - "integrity": "sha512-+V5QIQ5f6CDXQpWNICELwjwuHdqeJM1UenlZWx5ujcRMc9venvluCjFb4t5NYLhb6IhkbMVOxzVuOqkgMxee2A==" - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "requires": { - "kind-of": "^6.0.2" - } + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" }, "malihu-custom-scrollbar-plugin": { "version": "3.1.5", @@ -1863,1334 +1010,28 @@ "jquery-mousewheel": ">=3.0.6" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } + "select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" - }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "requires": { - "once": "^1.3.2" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-polyfill": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", - "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=" - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "select2": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", - "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "requires": { - "sver-compat": "^1.5.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "sweetalert": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz", - "integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==", - "requires": { - "es6-object-assign": "^1.1.0", - "promise-polyfill": "^6.0.2" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" - }, - "timeago": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", - "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "sweetalert2": { + "version": "11.26.24", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.26.24.tgz", + "integrity": "sha512-SLgukW4wicewpW5VOukSXY5Z6DL/z7HCOK2ODSjmQPiSphCN8gJAmh9npoceXOtBRNoDN0xIz+zHYthtfiHmjg==" + }, + "timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", "requires": { "jquery": ">=1.5.0 <4.0" } - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "requires": { - "through2": "^2.0.3" - } - }, - "toastr": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", - "integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=", - "requires": { - "jquery": ">=1.12.0" - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" - }, - "undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" - }, - "vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "yargs": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", - "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "5.0.0-security.0" - } - }, - "yargs-parser": { - "version": "5.0.0-security.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", - "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } } } } diff --git a/samples/WebApp/src/BookStore.Blazor/package.json b/samples/WebApp/src/BookStore.Blazor/package.json index 7d42c69..0479161 100644 --- a/samples/WebApp/src/BookStore.Blazor/package.json +++ b/samples/WebApp/src/BookStore.Blazor/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~4.2.0", - "@abp/aspnetcore.components.server.leptonxlitetheme": "~4.2.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0", + "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0" } } diff --git a/samples/WebApp/src/BookStore.Blazor/yarn.lock b/samples/WebApp/src/BookStore.Blazor/yarn.lock index 421dd0a..363a013 100644 --- a/samples/WebApp/src/BookStore.Blazor/yarn.lock +++ b/samples/WebApp/src/BookStore.Blazor/yarn.lock @@ -2,320 +2,324 @@ # yarn lockfile v1 -"@abp/aspnetcore.components.server.leptonxlitetheme@~4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-4.2.1.tgz#3fb1c687940052cc20e93a282ce8fbc61c0844e7" - integrity sha512-2DgQMU6MPAJ7WmcJUaoouk4eAXP8XhJftdcPh+BjB9rCu5FDQnWHqhT6hQOz1DR+KQ3vD3R8jbyZis1sB8InSw== - dependencies: - "@abp/aspnetcore.components.server.theming" "~9.2.1" - -"@abp/aspnetcore.components.server.theming@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-9.2.1.tgz#9e9e01f6356b4a5616fb706460b0cde53204075a" - integrity sha512-fxOJwzG7YiMYLxYHKLPL3Cv0pynfivOCLqhG+v60Hz4VTUIDqJDy4EJ2EN+LcEAkpYGglzGNmbGh5je+2anzCA== - dependencies: - "@abp/bootstrap" "~9.2.1" - "@abp/font-awesome" "~9.2.1" - -"@abp/aspnetcore.mvc.ui.theme.leptonxlite@~4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-4.2.1.tgz#3e3cc78b0d1d56113d459d61e01125bffada0c21" - integrity sha512-unZMV9HY13Kq00FZROVlo9po+foivENEoM7jUmZWlxOQjxBwa3/VJaxwQIXd9DZOqdpJpi5zUv/pSb6DqiZkfg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.1.tgz#35f6de6f106c80592ce70d36b6e8b20c64862803" - integrity sha512-kZz1tgUguGHxwG1MRkbkeXn9sIjbCOHJcBU+w+XuWwCqigM2yaE+KgnASDcjCrjQiPu6i73hf9OwtxXY1UbGMQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.1" - "@abp/bootstrap" "~9.2.1" - "@abp/bootstrap-datepicker" "~9.2.1" - "@abp/bootstrap-daterangepicker" "~9.2.1" - "@abp/datatables.net-bs5" "~9.2.1" - "@abp/font-awesome" "~9.2.1" - "@abp/jquery-form" "~9.2.1" - "@abp/jquery-validation-unobtrusive" "~9.2.1" - "@abp/lodash" "~9.2.1" - "@abp/luxon" "~9.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.1" - "@abp/moment" "~9.2.1" - "@abp/select2" "~9.2.1" - "@abp/sweetalert2" "~9.2.1" - "@abp/timeago" "~9.2.1" - -"@abp/aspnetcore.mvc.ui@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.1.tgz#8b30f830d85f7e1f4a386b0ef8d0444e2550bc42" - integrity sha512-0C41JpevGynbyHGeKkqLUSVNK64QETsKVyVWY4fSZkChGHlD09Fn3qIlHJInpBqJ9qNYs5VQ7RRP02PSum9mAg== - dependencies: - ansi-colors "^4.1.3" - -"@abp/bootstrap-datepicker@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.1.tgz#373c8715d175ca23a8871bacdb5f017b070254aa" - integrity sha512-uaCpz5EDSZYDacjnYoqTiktTDFGnGJPEHYh5eG4BORlQta53Hvak7m2CkRVjdOaXtuPLi6EbWPSh2bHIfhKRyQ== - dependencies: - bootstrap-datepicker "^1.10.0" - -"@abp/bootstrap-daterangepicker@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.1.tgz#b49e17a4753b09d49bfad6774a7f185e7e5bf71c" - integrity sha512-kd6LEACfx7CBIQOAiE/RHFp/WnthE2iz/eivl3fwuz1VgAO0CBIQ7hYoX91GaAIQgt+OAcgGbOl2G6E284EM9Q== - dependencies: - bootstrap-daterangepicker "^3.1.0" - -"@abp/bootstrap@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.1.tgz#ddf624e95f1dab4a8fce8d20b6dccd2b3d3f1679" - integrity sha512-NghAVP7M/Y2y9GYDu7IWo8oW7EyJEO+1NnPqCudpjWX4C6B27d7ghJ7I0MfrHoRq9/hBJZ07AKf3KMAZQD99ng== - dependencies: - "@abp/core" "~9.2.1" - bootstrap "^5.3.3" - -"@abp/core@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.1.tgz#f7c635f1fe88fc3fbbc4accaa6aee2dc3b5631a7" - integrity sha512-onCzS2w+U+wBv5FRDCVE176AiyZDMm1D5GaqiEnpuAwsBncFpFyZedC95dtPmykagJbpOvHVSPOLyZ2jzGjcYg== - dependencies: - "@abp/utils" "~9.2.1" - -"@abp/datatables.net-bs5@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.1.tgz#ff69059e96d5341166fa8d08390e9bb352010e5d" - integrity sha512-NEkf8xWTIYFDs9lAAPs0hOL2UD+pnVwyix/9IAtip3BIkyPFpLCniNWbu1WhuNJpfmLHrWPSqIrouR80gGL7PQ== - dependencies: - "@abp/datatables.net" "~9.2.1" - datatables.net-bs5 "^2.1.8" - -"@abp/datatables.net@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.1.tgz#0a5ab74ca44cd785efb487f0447e8acdea9d7aa1" - integrity sha512-A9TSPRNUV0eeCPnpGV9Htu9ZylUf3e03smYcbEROQHe+htwhcEV5dz8SLAI90baPi2g7VnyPav/3efaqo+ETdg== - dependencies: - "@abp/jquery" "~9.2.1" - datatables.net "^2.1.8" - -"@abp/font-awesome@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.1.tgz#a387f1cf457bdb6e3cd30bd9f4c455a41f8ca0b1" - integrity sha512-RVo3422BItdAAmafSCH/mT1Ux8q6yUz7nswGep4beP1k1VfmFExj1mgVphIpAlH3DWyzfnwUOq7lLWf/Ul2dOA== - dependencies: - "@abp/core" "~9.2.1" - "@fortawesome/fontawesome-free" "^6.6.0" - -"@abp/jquery-form@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.1.tgz#727b391c36e8ff46b62cb01be14715a05fe74b4f" - integrity sha512-n6EpUNNRzilOzP5rYTWr9K2mPQbvBQAuxPiwUZpfwf+QpJrs+NppJMaC06HFbHcSkDDy/utd+P1/sqWaJjL/tw== - dependencies: - "@abp/jquery" "~9.2.1" - jquery-form "^4.3.0" - -"@abp/jquery-validation-unobtrusive@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.1.tgz#98215811818e618d96a1dcac6419962fd39c6fef" - integrity sha512-7no3KxRW3agw4EAM5iTvQjE4+m9JrjuMAV20gAU0uVPB2+sHlluEAks0IU9wz76T+Ac7osferUZz33LgdDvIaw== - dependencies: - "@abp/jquery-validation" "~9.2.1" - jquery-validation-unobtrusive "^4.0.0" - -"@abp/jquery-validation@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.1.tgz#559c581523e4e098f2bf67627dfe6c7ef0e1c3c1" - integrity sha512-AEGm3agbwr1f5kmXvpBeiDmsS22P88zVr8NJDICGsgBxZofKndXsDFciNZGu6lXF5qXp8AwGRi//QPaCeQsP8g== - dependencies: - "@abp/jquery" "~9.2.1" - jquery-validation "^1.21.0" - -"@abp/jquery@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.1.tgz#bbcc9eab9cef528a8163f5062665ffcf2b87c2f0" - integrity sha512-gdDIKMNEpeUdzUu5C/g6j568ytJ7ifaDxBr1NYf2kJ34p7y6rrBmyY+sL+xR3ZlcGgyPGXyFhTLRD7qTjXlkPg== - dependencies: - "@abp/core" "~9.2.1" - jquery "~3.7.1" - -"@abp/lodash@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.1.tgz#a80ab7a908a0332b721277b1193209187fab57d8" - integrity sha512-I2+XYqwMi3+FXCv4xp5hBoJmOszg2WR1gnGc+Qd0zwb2VAbG4MvKVFgM/GUAFD8EKlquGyPf3f+4l5FkaPFkrQ== - dependencies: - "@abp/core" "~9.2.1" - lodash "^4.17.21" - -"@abp/luxon@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.1.tgz#7e3d197425813cfc6932cd3f9f09f97ecd2f4fc7" - integrity sha512-2tyOZRmq9jQN0Uhg8WaHfEzL0Xeew04sbA8O9bqw28psRbXaWXEVdElRMBNt50sZkFPhHFoxxFN7PR8obs0Qug== - dependencies: - "@abp/core" "~9.2.1" - luxon "^3.5.0" - -"@abp/malihu-custom-scrollbar-plugin@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.1.tgz#b0fa249885d442ba84657c7705df73851cb56db1" - integrity sha512-fzgQZsbN0xLMxEWh7znKAI4j0CPb8ciT/3x+QguGZDJf7OFw0YnEWctfEYJnnGG28HpHs1mh64gjqoeceHy0HQ== - dependencies: - "@abp/core" "~9.2.1" - malihu-custom-scrollbar-plugin "^3.1.5" - -"@abp/moment@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.1.tgz#9982c65d63171962091b08fc4e0d1ea98cc1f0eb" - integrity sha512-V4KH1WmahP0BoaQGLEY4a0AQyfk1cLeNMk3qCPtuqIUbOFwimJY3oQgpelilEwjI3oD/upMzGphjLGrfQLRM2A== - dependencies: - moment "^2.30.1" - -"@abp/select2@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.1.tgz#5c3c6a4b0018b533491d6a46540069782559c57a" - integrity sha512-p743cnoohNLKX11ptnBcN5z9+ZyC11M9mwRR6SWbW5f1Eqvbkq03bf2mDFUfukCNis4RefeURZunPlsBOmRn/A== +"@abp/aspnetcore.components.server.leptonxlitetheme@~5.3.0": + "integrity" "sha512-rSkFUgDJiZQ/cKs20AVwyb1YS9KtUwP+OiG4Mr+zIst+GMsLOfK7ZBMd6qlGFN+0dQWVt89EfYckOJimsNE9xg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "@abp/aspnetcore.components.server.theming" "~10.3.0" + +"@abp/aspnetcore.components.server.theming@~10.3.0": + "integrity" "sha512-s9MtBQHL5GQAHrZCRczgd0HOWM1++ImeEytT6/znaQRf4iEsR91+MxZdsfuuW4apBJwNO2QqCGefKTmzpxUBzg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/bootstrap" "~10.3.0" + "@abp/font-awesome" "~10.3.0" + +"@abp/aspnetcore.mvc.ui.theme.leptonxlite@~5.3.0": + "integrity" "sha512-gB+Vczz5ZY7wOUjGWgJdcFbhbFRG4nOH/5HMpXWtBxuigapjoofubrgDqVVsOzVtremDRy/uUZomYlEdWiTpQg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0": + "integrity" "sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/aspnetcore.mvc.ui" "~10.3.0" + "@abp/bootstrap" "~10.3.0" + "@abp/bootstrap-datepicker" "~10.3.0" + "@abp/bootstrap-daterangepicker" "~10.3.0" + "@abp/datatables.net-bs5" "~10.3.0" + "@abp/font-awesome" "~10.3.0" + "@abp/jquery-validation-unobtrusive" "~10.3.0" + "@abp/lodash" "~10.3.0" + "@abp/luxon" "~10.3.0" + "@abp/malihu-custom-scrollbar-plugin" "~10.3.0" + "@abp/moment" "~10.3.0" + "@abp/select2" "~10.3.0" + "@abp/sweetalert2" "~10.3.0" + "@abp/timeago" "~10.3.0" + +"@abp/aspnetcore.mvc.ui@~10.3.0": + "integrity" "sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "ansi-colors" "^4.1.3" + +"@abp/bootstrap-datepicker@~10.3.0": + "integrity" "sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==" + "resolved" "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "bootstrap-datepicker" "^1.10.1" + +"@abp/bootstrap-daterangepicker@~10.3.0": + "integrity" "sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==" + "resolved" "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/moment" "~10.3.0" + "bootstrap-daterangepicker" "^3.1.0" + +"@abp/bootstrap@~10.3.0": + "integrity" "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==" + "resolved" "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "@abp/popper.js" "~10.3.0" + "bootstrap" "^5.3.8" + +"@abp/core@~10.3.0": + "integrity" "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==" + "resolved" "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/utils" "~10.3.0" + +"@abp/datatables.net-bs5@~10.3.0": + "integrity" "sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==" + "resolved" "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/datatables.net" "~10.3.0" + "datatables.net-bs5" "^2.3.4" + +"@abp/datatables.net@~10.3.0": + "integrity" "sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==" + "resolved" "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/jquery" "~10.3.0" + "datatables.net" "^2.3.4" + +"@abp/font-awesome@~10.3.0": + "integrity" "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==" + "resolved" "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "@fortawesome/fontawesome-free" "^7.0.1" + +"@abp/jquery-validation-unobtrusive@~10.3.0": + "integrity" "sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==" + "resolved" "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/jquery-validation" "~10.3.0" + "jquery-validation-unobtrusive" "^4.0.0" + +"@abp/jquery-validation@~10.3.0": + "integrity" "sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==" + "resolved" "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/jquery" "~10.3.0" + "jquery-validation" "^1.21.0" + +"@abp/jquery@~10.3.0": + "integrity" "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==" + "resolved" "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "jquery" "~3.7.1" + +"@abp/lodash@~10.3.0": + "integrity" "sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==" + "resolved" "https://registry.npmjs.org/@abp/lodash/-/lodash-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "lodash" "^4.17.21" + +"@abp/luxon@~10.3.0": + "integrity" "sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==" + "resolved" "https://registry.npmjs.org/@abp/luxon/-/luxon-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@abp/core" "~9.2.1" - select2 "^4.0.13" + "@abp/core" "~10.3.0" + "luxon" "^3.7.2" -"@abp/sweetalert2@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.1.tgz#3db7e33855614460d2fdc5e3f8b65530902fcd9a" - integrity sha512-fJYLVxc5pAJoSLIcQYf5xRkPVnVQi/5+xwTgOePy3QeygOrAMpGS7vy+MIq7Mn+tBoEFlQ/Jn+NoB04AIYYPFw== +"@abp/malihu-custom-scrollbar-plugin@~10.3.0": + "integrity" "sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==" + "resolved" "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@abp/core" "~9.2.1" - sweetalert2 "^11.14.1" + "@abp/core" "~10.3.0" + "malihu-custom-scrollbar-plugin" "^3.1.5" -"@abp/timeago@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.1.tgz#6904e2d7bda57b436e3385c5fd1899b9cd806dd8" - integrity sha512-fmsPuBouWR/BvhXN53yJpg1Se06uIL7ox8XOgx1MHCe+1vxbXnFCtM2VujfowWtOSTJOzbL1DHcDpFE7JlkOag== +"@abp/moment@~10.3.0": + "integrity" "sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==" + "resolved" "https://registry.npmjs.org/@abp/moment/-/moment-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@abp/jquery" "~9.2.1" - timeago "^1.6.7" + "moment" "^2.30.1" -"@abp/utils@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.1.tgz#803fd48927ae332309f8a7005806c6aa6e499750" - integrity sha512-+j0SNB/K2j2xTTijy/qCL3ds2c/7OW4nrJ8Ccq17WtEqP+jk2TtJi0EnLqhNTDih0A++XV+pcftUC+cQ0h1cUw== +"@abp/popper.js@~10.3.0": + "integrity" "sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==" + "resolved" "https://registry.npmjs.org/@abp/popper.js/-/popper.js-10.3.0.tgz" + "version" "10.3.0" dependencies: - just-compare "^2.3.0" - -"@fortawesome/fontawesome-free@^6.6.0": - version "6.7.2" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz#8249de9b7e22fcb3ceb5e66090c30a1d5492b81a" - integrity sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA== + "@abp/core" "~10.3.0" + "@popperjs/core" "^2.11.8" -ansi-colors@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -bootstrap-datepicker@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz#61612bbe8bf0a69a5bce32bbcdda93ebb6ccf24a" - integrity sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg== - dependencies: - jquery ">=3.4.0 <4.0.0" - -bootstrap-daterangepicker@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz#632e6fb2de4b6360c5c0a9d5f6adb9aace051fe8" - integrity sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g== +"@abp/select2@~10.3.0": + "integrity" "sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==" + "resolved" "https://registry.npmjs.org/@abp/select2/-/select2-10.3.0.tgz" + "version" "10.3.0" dependencies: - jquery ">=1.10" - moment "^2.9.0" - -bootstrap@^5.3.3: - version "5.3.7" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.7.tgz#8640065036124d961d885d80b5945745e1154d90" - integrity sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw== + "@abp/core" "~10.3.0" + "select2" "^4.0.13" -datatables.net-bs5@^2.1.8: - version "2.3.2" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.2.tgz#cffb8007a9f752a997bc70c0dbe9f545edfd18eb" - integrity sha512-1rh0ZTLoiziIQ4oAtgr+IOYVgJfAIceDnbDe535u8kv191pBAdTrKF6ovQO98Xy9mDXLdLNB7QCrLiV/sgPoQw== +"@abp/sweetalert2@~10.3.0": + "integrity" "sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==" + "resolved" "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz" + "version" "10.3.0" dependencies: - datatables.net "2.3.2" - jquery ">=1.7" + "@abp/core" "~10.3.0" + "sweetalert2" "^11.23.0" -datatables.net@2.3.2, datatables.net@^2.1.8: - version "2.3.2" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.2.tgz#6821f6288e6ad3cb6879c33e0e7e11d4091d330b" - integrity sha512-31TzwIQM0+pr2ZOEOEH6dsHd/WSAl5GDDGPezOHPI3mM2NK4lcDyOoG8xXeWmSbVfbi852LNK5C84fpp4Q+qxg== - dependencies: - jquery ">=1.7" - -jquery-form@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/jquery-form/-/jquery-form-4.3.0.tgz#7d3961c314a1f2d15298f4af1d3943f54f4149c6" - integrity sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ== +"@abp/timeago@~10.3.0": + "integrity" "sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==" + "resolved" "https://registry.npmjs.org/@abp/timeago/-/timeago-10.3.0.tgz" + "version" "10.3.0" dependencies: - jquery ">=1.7.2" - -jquery-mousewheel@>=3.0.6: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.2.2.tgz#48c833f6260ee0c46d438a999e7d0060ec9eed0b" - integrity sha512-JP71xTAg08ZY3hcs9ZbYUZ5i+dkSsz4yRl/zpWkAmtzc+kMs5EfPkpkINSidiLYMaR0MTo3DfFGF9WIezMsFQQ== - dependencies: - jquery ">=1.2.6" - -jquery-validation-unobtrusive@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz#dfcf25a558496a2c883db6021d10f5398d15f99d" - integrity sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ== - dependencies: - jquery "^3.6.0" - jquery-validation ">=1.19" - -jquery-validation@>=1.19, jquery-validation@^1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.21.0.tgz#78fc05ab76020912a246af3661b3f54a438bca93" - integrity sha512-xNot0rlUIgu7duMcQ5qb6MGkGL/Z1PQaRJQoZAURW9+a/2PGOUxY36o/WyNeP2T9R6jvWB8Z9lUVvvQWI/Zs5w== - -jquery@>=1.10, jquery@>=1.2.6, "jquery@>=1.5.0 <4.0", jquery@>=1.7, jquery@>=1.7.2, "jquery@>=3.4.0 <4.0.0", jquery@^3.6.0, jquery@~3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" - integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== - -just-compare@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/just-compare/-/just-compare-2.3.0.tgz#a2adcc1d1940536263275f5a1ef1298bcacfeda7" - integrity sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -luxon@^3.5.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.6.1.tgz#d283ffc4c0076cb0db7885ec6da1c49ba97e47b0" - integrity sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ== - -malihu-custom-scrollbar-plugin@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz#310cecc5e59415a1c29e9dfb5d2b6e01d66a29ef" - integrity sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ== - dependencies: - jquery-mousewheel ">=3.0.6" - -moment@^2.30.1, moment@^2.9.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== - -select2@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/select2/-/select2-4.0.13.tgz#0dbe377df3f96167c4c1626033e924372d8ef44d" - integrity sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw== - -sweetalert2@^11.14.1: - version "11.22.2" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.22.2.tgz#d4d82a2edd4e97024306fe37f1bc64fa576e9bc9" - integrity sha512-GFQGzw8ZXF23PO79WMAYXLl4zYmLiaKqYJwcp5eBF07wiI5BYPbZtKi2pcvVmfUQK+FqL1risJAMxugcPbGIyg== - -timeago@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/timeago/-/timeago-1.6.7.tgz#afd467c29a911e697fc22a81888c7c3022783cb5" - integrity sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ== - dependencies: - jquery ">=1.5.0 <4.0" + "@abp/jquery" "~10.3.0" + "timeago" "^1.6.7" + +"@abp/utils@~10.3.0": + "integrity" "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==" + "resolved" "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "just-compare" "^2.3.0" + +"@fortawesome/fontawesome-free@^7.0.1": + "integrity" "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==" + "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz" + "version" "7.2.0" + +"@popperjs/core@^2.11.8": + "integrity" "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" + "version" "2.11.8" + +"ansi-colors@^4.1.3": + "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + "version" "4.1.3" + +"bootstrap-datepicker@^1.10.1": + "integrity" "sha512-GIe+fsLp9Hi30oW7L2v2Q9/a4+aojrIA2p4ZagtLuKw2lpfQgjJjM0L6vl/lYQydGXWUbpoKbEC/O5tzWIkEKQ==" + "resolved" "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.1.tgz" + "version" "1.10.1" + dependencies: + "jquery" ">=3.4.0 <4.0.0" + +"bootstrap-daterangepicker@^3.1.0": + "integrity" "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==" + "resolved" "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "jquery" ">=1.10" + "moment" "^2.9.0" + +"bootstrap@^5.3.8": + "integrity" "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==" + "resolved" "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz" + "version" "5.3.8" + +"datatables.net-bs5@^2.3.4": + "integrity" "sha512-TbFH99QSWm93Kn3teHLFKeyOqYbaiddlHvRFdXUwAvh/fjTMhACWmHG+I43ss8d23OEFHV0WIbN4lpPusZm5zw==" + "resolved" "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "datatables.net" "2.3.8" + "jquery" ">=1.7" + +"datatables.net@^2.3.4": + "integrity" "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==" + "resolved" "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "jquery" ">=1.7" + +"datatables.net@2.3.8": + "integrity" "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==" + "resolved" "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "jquery" ">=1.7" + +"jquery-mousewheel@>=3.0.6": + "integrity" "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" + "resolved" "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz" + "version" "3.1.13" + +"jquery-validation-unobtrusive@^4.0.0": + "integrity" "sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ==" + "resolved" "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "jquery" "^3.6.0" + "jquery-validation" ">=1.19" + +"jquery-validation@^1.21.0", "jquery-validation@>=1.19": + "integrity" "sha512-ePLXLWK7Rh5eR652YsuIu7YPeGlCXrsJUteVw5iZopiU17yaMd3FaDggs6yyNMl56p8TYVeDRmKGK3fPZrMeQw==" + "resolved" "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.22.1.tgz" + "version" "1.22.1" + +"jquery@^1.7 || ^2.0 || ^3.1 || ^4.0", "jquery@^3.6.0", "jquery@>=1.10", "jquery@>=1.5.0 <4.0", "jquery@>=1.7", "jquery@>=3.4.0 <4.0.0", "jquery@~3.7.1": + "integrity" "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + "resolved" "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz" + "version" "3.7.1" + +"just-compare@^2.3.0": + "integrity" "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + "resolved" "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz" + "version" "2.3.0" + +"lodash@^4.17.21": + "integrity" "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz" + "version" "4.18.1" + +"luxon@^3.7.2": + "integrity" "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==" + "resolved" "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz" + "version" "3.7.2" + +"malihu-custom-scrollbar-plugin@^3.1.5": + "integrity" "sha1-MQzsxeWUFaHCnp37XStuAdZqKe8=" + "resolved" "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "jquery-mousewheel" ">=3.0.6" + +"moment@^2.30.1", "moment@^2.9.0": + "integrity" "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz" + "version" "2.30.1" + +"select2@^4.0.13": + "integrity" "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + "resolved" "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz" + "version" "4.0.13" + +"sweetalert2@^11.23.0": + "integrity" "sha512-SLgukW4wicewpW5VOukSXY5Z6DL/z7HCOK2ODSjmQPiSphCN8gJAmh9npoceXOtBRNoDN0xIz+zHYthtfiHmjg==" + "resolved" "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.26.24.tgz" + "version" "11.26.24" + +"timeago@^1.6.7": + "integrity" "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==" + "resolved" "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz" + "version" "1.6.7" + dependencies: + "jquery" ">=1.5.0 <4.0" diff --git a/samples/WebApp/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs b/samples/WebApp/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs index 3ad09fd..01b67d6 100644 --- a/samples/WebApp/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs +++ b/samples/WebApp/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using BookStore.Data; @@ -26,6 +27,7 @@ public class MongoDbBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITra { var dbContexts = _serviceProvider.GetServices(); var connectionStringResolver = _serviceProvider.GetRequiredService(); + var configuration = _serviceProvider.GetRequiredService(); if (_serviceProvider.GetRequiredService().IsAvailable) { @@ -34,9 +36,22 @@ public class MongoDbBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITra foreach (var dbContext in dbContexts) { - var connectionString = - await connectionStringResolver.ResolveAsync( - ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); + var connectionStringName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); + var connectionString = await connectionStringResolver.ResolveAsync(connectionStringName); + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = await connectionStringResolver.ResolveAsync(); + } + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = configuration.GetConnectionString("Default"); + } + if (connectionString.IsNullOrWhiteSpace()) + { + throw new InvalidOperationException( + $"Could not find a MongoDB connection string for '{connectionStringName}' or 'Default'."); + } + var mongoUrl = new MongoUrl(connectionString); var databaseName = mongoUrl.DatabaseName; var client = new MongoClient(mongoUrl); diff --git a/samples/WebAppBlazorServer/README.md b/samples/WebAppBlazorServer/README.md index 43e1161..afae9dc 100644 --- a/samples/WebAppBlazorServer/README.md +++ b/samples/WebAppBlazorServer/README.md @@ -1,58 +1,58 @@ -# BookStore +# BookStore Blazor Server Sample -## About this solution +This sample demonstrates the AntDesign theme in an ABP Blazor Server application. -This is a layered startup solution based on [Domain Driven Design (DDD)](https://abp.io/docs/latest/framework/architecture/domain-driven-design) practises. All the fundamental ABP modules are already installed. Check the [Application Startup Template](https://abp.io/docs/latest/solution-templates/layered-web-application) documentation for more info. +## Prerequisites -### Pre-requirements +- .NET SDK 10.0+ +- Node.js 18 or newer +- MongoDB +- ABP CLI (`dotnet tool install -g Volo.Abp.Cli` if needed) -* [.net10.0+ SDK](https://dotnet.microsoft.com/download/dotnet) -* [Node v18 or 20](https://nodejs.org/en) +## Run -### Configurations +Install front-end libraries: -The solution comes with a default configuration that works out of the box. However, you may consider to change the following configuration before running your solution: - -* Check the `ConnectionStrings` in `appsettings.json` files under the `BookStore.Blazor` and `BookStore.DbMigrator` projects and change it if you need. - -### Before running the application - -* Run `abp install-libs` command on your solution folder to install client-side package dependencies. This step is automatically done when you create a new solution, if you didn't especially disabled it. However, you should run it yourself if you have first cloned this solution from your source control, or added a new client-side package dependency to your solution. -* Run `BookStore.DbMigrator` to create the initial database. This step is also automatically done when you create a new solution, if you didn't especially disabled it. This should be done in the first run. It is also needed if a new database migration is added to the solution later. - -#### Generating a Signing Certificate - -In the production environment, you need to use a production signing certificate. ABP Framework sets up signing and encryption certificates in your application and expects an `openiddict.pfx` file in your application. +```bash +abp install-libs +``` -To generate a signing certificate, you can use the following command: +Apply database migrations and seed data: ```bash -dotnet dev-certs https -v -ep openiddict.pfx -p d6d09f80-360d-4bc1-b9c5-f9cbfc2cb8f3 +dotnet run --project .\src\BookStore.DbMigrator\ ``` -> `d6d09f80-360d-4bc1-b9c5-f9cbfc2cb8f3` is the password of the certificate, you can change it to any password you want. - -It is recommended to use **two** RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. +Start the Blazor Server app: -For more information, please refer to: [OpenIddict Certificate Configuration](https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios) +```bash +dotnet run --project .\src\BookStore.Blazor\ +``` -> Also, see the [Configuring OpenIddict](https://abp.io/docs/latest/Deployment/Configuring-OpenIddict#production-environment) documentation for more information. +Open `https://localhost:44322`. -### Solution structure +## Default Login -This is a layered monolith application that consists of the following applications: +- Username: `admin` +- Password: `1q2w3E*` -* `BookStore.DbMigrator`: A console application which applies the migrations and also seeds the initial data. It is useful on development as well as on production environment. -* `BookStore.Blazor`: ASP.NET Core Blazor Server application that is the essential web application of the solution. +## What To Verify +- The application uses the refactored AntDesign Pro-style layout. +- The sidebar is responsive and can collapse on smaller screens. +- Authenticated users can open the floating theme settings panel. +- Theme settings apply immediately without restarting the application. -## Deploying the application +## Theme Settings Management -Deploying an ABP application follows the same process as deploying any .NET or ASP.NET Core application. However, there are important considerations to keep in mind. For detailed guidance, refer to ABP's [deployment documentation](https://abp.io/docs/latest/Deployment/Index). +This sample is configured with `AntDesignThemeManagement`. -### Additional resources +Go to `Administration -> Settings -> Theme settings management` to control which sections appear in the user-facing panel: -You can see the following resources to learn more about your solution and the ABP Framework: +- `Enable theme settings` +- `Page style setting` +- `Navigation mode` +- `Regional settings` +- `Other settings` -* [Web Application Development Tutorial](https://abp.io/docs/latest/tutorials/book-store/part-1) -* [Application Startup Template](https://abp.io/docs/latest/startup-templates/application/index) +If all child options are disabled, `Enable theme settings` is automatically disabled. diff --git a/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.abppkg b/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.abppkg index a3ceaf2..a36e903 100644 --- a/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.abppkg +++ b/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.abppkg @@ -1,3 +1,4 @@ { - "role": "host.blazor-server" + "role": "host.blazor-server", + "projectId": "97bca713-f461-4f87-92d0-fb96867f0a10" } \ No newline at end of file diff --git a/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.csproj b/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.csproj index 4ee7da9..92b8ed3 100644 --- a/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.csproj +++ b/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStore.Blazor.csproj @@ -34,6 +34,7 @@ + diff --git a/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStoreBlazorModule.cs b/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStoreBlazorModule.cs index 1492a18..6b44153 100644 --- a/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStoreBlazorModule.cs +++ b/samples/WebAppBlazorServer/src/BookStore.Blazor/BookStoreBlazorModule.cs @@ -17,7 +17,7 @@ using BookStore.Blazor.Menus; using BookStore.MongoDB; using BookStore.Localization; using BookStore.MultiTenancy; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Volo.Abp; using Volo.Abp.Account.Web; using Volo.Abp.AspNetCore.Components.Web; @@ -35,6 +35,8 @@ using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; using Volo.Abp.Identity; using Volo.Abp.Autofac; using Lsw.Abp.IdentityManagement.Blazor.Server.AntDesignUI; +using Lsw.Abp.AntDesignThemeManagement.Blazor.Server; +using Lsw.Abp.AntDesignThemeManagement; using Lsw.Abp.TenantManagement.Blazor.Server.AntDesignUI; using Lsw.Abp.SettingManagement.Blazor.Server.AntDesignUI; using Lsw.Abp.FeatureManagement.Blazor.Server.AntDesignUI; @@ -65,6 +67,7 @@ namespace BookStore.Blazor; typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), typeof(AbpAspNetCoreSerilogModule), typeof(AbpFeatureManagementBlazorServerAntDesignModule), + typeof(AbpAntDesignThemeManagementBlazorServerModule), typeof(AbpSettingManagementBlazorServerAntDesignModule), typeof(AbpMapperlyModule) )] @@ -264,6 +267,7 @@ public class BookStoreBlazorModule : AbpModule Configure(options => { options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + options.ConventionalControllers.Create(typeof(AbpAntDesignThemeManagementApplicationModule).Assembly); }); } diff --git a/samples/WebAppBlazorServer/src/BookStore.Blazor/package-lock.json b/samples/WebAppBlazorServer/src/BookStore.Blazor/package-lock.json index d671d9a..f286753 100644 --- a/samples/WebAppBlazorServer/src/BookStore.Blazor/package-lock.json +++ b/samples/WebAppBlazorServer/src/BookStore.Blazor/package-lock.json @@ -1,1733 +1,990 @@ { "name": "my-app", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, - "dependencies": { - "@abp/aspnetcore.mvc.ui": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.2.1.tgz", - "integrity": "sha512-/a/KDVQ3EuETSSe+KqmsR24w6RWHvaokvmmOjL+tCpFQyeaYAZ88E9pvM5hC9HVR24FCHTiARiXwgMTw2eZFyQ==", - "requires": { - "ansi-colors": "^4.1.1", - "extend-object": "^1.0.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "gulp": "^4.0.2", - "merge-stream": "^2.0.0", - "micromatch": "^4.0.2", - "path": "^0.12.7" - } - }, - "@abp/aspnetcore.mvc.ui.theme.basic": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.2.1.tgz", - "integrity": "sha512-Tb0g4mtdSsjQkadvnjjRjObEhweUvigto0BTv5SzRNi0oQLW8ZVUcFmuMWB09nJAIPrbuA3QuPUlXzFcv2gsdg==", - "requires": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~4.2.1" + "packages": { + "": { + "name": "my-app", + "version": "1.0.0", + "dependencies": { + "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0", + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0" } }, - "@abp/aspnetcore.mvc.ui.theme.shared": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.2.1.tgz", - "integrity": "sha512-+f54CysWpEKfxjIIjhnTKW0jJ0Rg+wS6yxb9Rg3qxA5iEUkxp3B+NB5wA9rT5YcY9APrwVpiw1miNRmq5ZvFXg==", - "requires": { - "@abp/aspnetcore.mvc.ui": "~4.2.1", - "@abp/bootstrap": "~4.2.1", - "@abp/bootstrap-datepicker": "~4.2.1", - "@abp/datatables.net-bs4": "~4.2.1", - "@abp/font-awesome": "~4.2.1", - "@abp/jquery-form": "~4.2.1", - "@abp/jquery-validation-unobtrusive": "~4.2.1", - "@abp/lodash": "~4.2.1", - "@abp/luxon": "~4.2.1", - "@abp/malihu-custom-scrollbar-plugin": "~4.2.1", - "@abp/select2": "~4.2.1", - "@abp/sweetalert": "~4.2.1", - "@abp/timeago": "~4.2.1", - "@abp/toastr": "~4.2.1" - } - }, - "@abp/bootstrap": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-4.2.1.tgz", - "integrity": "sha512-1Z4atDgHDxesjBh5uPb442NALcUucS2Lt56CaN5UPBXQvAPr72cw4hfKbW08KJ0ab7WME0uCi1vYZFM28/zqTg==", - "requires": { - "@abp/core": "~4.2.1", - "bootstrap": "^4.5.0", - "bootstrap-v4-rtl": "4.4.1-2" + "node_modules/@abp/aspnetcore.components.server.leptonxlitetheme": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-5.3.0.tgz", + "integrity": "sha512-rSkFUgDJiZQ/cKs20AVwyb1YS9KtUwP+OiG4Mr+zIst+GMsLOfK7ZBMd6qlGFN+0dQWVt89EfYckOJimsNE9xg==", + "dependencies": { + "@abp/aspnetcore.components.server.theming": "~10.3.0" } }, - "@abp/bootstrap-datepicker": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.2.1.tgz", - "integrity": "sha512-35uaM+OBUqsBBIF08NUu7XBVIgwVQIjJard92Px7eR0EJ2AW6f5hNlJQYfPkYVdmkPIpG16qWctICB+L2W3ZKA==", - "requires": { - "bootstrap-datepicker": "^1.9.0" + "node_modules/@abp/aspnetcore.components.server.theming": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-10.3.0.tgz", + "integrity": "sha512-s9MtBQHL5GQAHrZCRczgd0HOWM1++ImeEytT6/znaQRf4iEsR91+MxZdsfuuW4apBJwNO2QqCGefKTmzpxUBzg==", + "dependencies": { + "@abp/bootstrap": "~10.3.0", + "@abp/font-awesome": "~10.3.0" } }, - "@abp/core": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/core/-/core-4.2.1.tgz", - "integrity": "sha512-EiJSgUytS9Mrv8GZr9pwIzxwlrP82hEcS67cAgDxBc4QOhtMXhGZBMjDBHoIkOt6Db/ua0iPC700w0Utt5kWZQ==", - "requires": { - "@abp/utils": "^4.2.1" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", + "dependencies": { + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" } }, - "@abp/datatables.net": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-4.2.1.tgz", - "integrity": "sha512-ZxpSW6PhJupjecTC25MEKTdjePvg2xNouqioL9L7V3lPJ6S3fsqNs9QFjFjpv0vltzXMaZgJTSuxilmR6s6piw==", - "requires": { - "@abp/jquery": "~4.2.1", - "datatables.net": "^1.10.21" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "dependencies": { + "@abp/utils": "~10.3.0" } }, - "@abp/datatables.net-bs4": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs4/-/datatables.net-bs4-4.2.1.tgz", - "integrity": "sha512-T66P74F58n4P5xwfhekriSr66A35okrXw61mlMXqeet8ACtxiM55MhXw89qvsL0qo5qG/a9d9MWPYNmZgXvKSQ==", - "requires": { - "@abp/datatables.net": "~4.2.1", - "datatables.net-bs4": "^1.10.21" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", + "dependencies": { + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "@abp/font-awesome": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-4.2.1.tgz", - "integrity": "sha512-kWAOqN7OtiBA7gd3VLH7pft1A5KYnJGJCn56xoqWIqLyHrSapwI5IMOojRDr+WhQJXk5EGE+rnmqRP51MYo4NQ==", - "requires": { - "@abp/core": "~4.2.1", - "@fortawesome/fontawesome-free": "^5.13.0" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "dependencies": { + "just-compare": "^2.3.0" } }, - "@abp/jquery": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-4.2.1.tgz", - "integrity": "sha512-xcoSu/2qc2AEF+dCTNHTCWjAo1dIcohHVPM3Yh36bb+JEcnruYYRokqZc4pzkh0GQamE1eMVGi3QOAmuURtbCg==", - "requires": { - "@abp/core": "~4.2.1", - "jquery": "~3.5.1" - }, - "dependencies": { - "jquery": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", - "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" - } + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==", + "engines": { + "node": ">=6" } }, - "@abp/jquery-form": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-4.2.1.tgz", - "integrity": "sha512-xnxaaOExhz7/8/P6XGvQuKitpuVjzoZz+r1Kr+W9gVy0dWZcCOfeVi4kdpxDFpqUmQJQJi0tvdVkFHx/hAkB7g==", - "requires": { - "@abp/jquery": "~4.2.1", - "jquery-form": "^4.3.0" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" } }, - "@abp/jquery-validation": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-4.2.1.tgz", - "integrity": "sha512-g87I0nO7Jk2d4Jt7PlLk/bHu5xQFH4+mbHwH4oRLAzflDhRNtNB+uVF35HK/1shprmSlZt6X+bHz652SEqD81g==", - "requires": { - "@abp/jquery": "~4.2.1", - "jquery-validation": "^1.19.2" + "node_modules/@abp/aspnetcore.components.server.theming/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-5.3.0.tgz", + "integrity": "sha512-gB+Vczz5ZY7wOUjGWgJdcFbhbFRG4nOH/5HMpXWtBxuigapjoofubrgDqVVsOzVtremDRy/uUZomYlEdWiTpQg==", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0" } }, - "@abp/jquery-validation-unobtrusive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.2.1.tgz", - "integrity": "sha512-STuVKdSUNjrW3q30GcszgzecHDdPmL3aA0jPsRJr0S2Wp5CQOe0dB7d5xyAnADIL68cPXjZWlz1OyXSQ2LixeQ==", - "requires": { - "@abp/jquery-validation": "~4.2.1", - "jquery-validation-unobtrusive": "^3.2.11" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/aspnetcore.mvc.ui": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz", + "integrity": "sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==", + "dependencies": { + "ansi-colors": "^4.1.3" } }, - "@abp/lodash": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-4.2.1.tgz", - "integrity": "sha512-hDwzR/Q9GqXPdQaijQ3B4GIWZ8z9clCW9vU59qbELD8xBZIJalTSrUGnIT8YNB9O5tNFb2FWJJbw5Nh8K7lu1A==", - "requires": { - "@abp/core": "~4.2.1", - "lodash": "^4.17.15" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz", + "integrity": "sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==", + "dependencies": { + "@abp/aspnetcore.mvc.ui": "~10.3.0", + "@abp/bootstrap": "~10.3.0", + "@abp/bootstrap-datepicker": "~10.3.0", + "@abp/bootstrap-daterangepicker": "~10.3.0", + "@abp/datatables.net-bs5": "~10.3.0", + "@abp/font-awesome": "~10.3.0", + "@abp/jquery-validation-unobtrusive": "~10.3.0", + "@abp/lodash": "~10.3.0", + "@abp/luxon": "~10.3.0", + "@abp/malihu-custom-scrollbar-plugin": "~10.3.0", + "@abp/moment": "~10.3.0", + "@abp/select2": "~10.3.0", + "@abp/sweetalert2": "~10.3.0", + "@abp/timeago": "~10.3.0" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", + "dependencies": { + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" } }, - "@abp/luxon": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-4.2.1.tgz", - "integrity": "sha512-Sussnocvw75EbJ1j0Ohn7F+SBQy9xPbiG6RJExdDFzxhUNsVp5wJF2Jm8hOZB3DYkeGAOskY5RoIG0abfE/j3w==", - "requires": { - "@abp/core": "~4.2.1", - "luxon": "^1.24.1" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/bootstrap-datepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz", + "integrity": "sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==", + "dependencies": { + "bootstrap-datepicker": "^1.10.1" } }, - "@abp/malihu-custom-scrollbar-plugin": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.2.1.tgz", - "integrity": "sha512-qBnBMzj4G/dAMShmF4EXr55hkMehC1+cB6Jjl1wPHgMV8QPafznBKGyM6KWxGhrl8K6nCErBbidgQKpYqtWhNA==", - "requires": { - "@abp/core": "~4.2.1", - "malihu-custom-scrollbar-plugin": "^3.1.5" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "dependencies": { + "@abp/utils": "~10.3.0" } }, - "@abp/select2": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-4.2.1.tgz", - "integrity": "sha512-g1AUGof5daULbVFCokR9JS1/4gIpEWKB5/+rRJBmnje2hUgBA3llD5PCOh5WRHA7urJJOD/5BjWlFdozluUAyg==", - "requires": { - "@abp/core": "~4.2.1", - "select2": "^4.0.13" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", + "dependencies": { + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "@abp/sweetalert": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/sweetalert/-/sweetalert-4.2.1.tgz", - "integrity": "sha512-xTi0oSjAkFMIDHgF8YB+oqFCl4gNfnt7mGHvEjJwpCEQSkuML9QsiGvw1TpXyHP7npOWSjjVpoyEBS2HXC778Q==", - "requires": { - "@abp/core": "~4.2.1", - "sweetalert": "^2.1.2" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", + "dependencies": { + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" } }, - "@abp/timeago": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-4.2.1.tgz", - "integrity": "sha512-46+2plKizUcRn2VWN5WPWvwEVz+xoKOmsH1tEJ8WKKNxjeNRAsfeOslbfIEks89hTXLQemP3txAbq9V3E8pwQw==", - "requires": { - "@abp/jquery": "~4.2.1", - "timeago": "^1.6.7" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/jquery-validation": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz", + "integrity": "sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==", + "dependencies": { + "@abp/jquery": "~10.3.0", + "jquery-validation": "^1.21.0" } }, - "@abp/toastr": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-4.2.1.tgz", - "integrity": "sha512-fdlMZjffEO/05aeG8BjTspARKGtUu2SpoFViTeHGhSPsCW55BvuehIgRhyOEQNfMqJz8m0cVR0R2q+WPFWf1XA==", - "requires": { - "@abp/jquery": "~4.2.1", - "toastr": "^2.1.4" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/jquery-validation-unobtrusive": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz", + "integrity": "sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==", + "dependencies": { + "@abp/jquery-validation": "~10.3.0", + "jquery-validation-unobtrusive": "^4.0.0" } }, - "@abp/utils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-4.2.1.tgz", - "integrity": "sha512-V7XYC38u4C+UpXQr28KA1KHL5nNgDsFHfZULPnkwPxV8DuhzemmPYN3qmSXi5hfSfp+psNCX3GYZRMCI57kHgQ==", - "requires": { - "just-compare": "^1.3.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/lodash": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-10.3.0.tgz", + "integrity": "sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==", + "dependencies": { + "@abp/core": "~10.3.0", + "lodash": "^4.17.21" } }, - "@fortawesome/fontawesome-free": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.2.tgz", - "integrity": "sha512-7l/AX41m609L/EXI9EKH3Vs3v0iA8tKlIOGtw+kgcoanI7p+e4I4GYLqW3UXWiTnjSFymKSmTTPKYrivzbxxqA==" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/luxon": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-10.3.0.tgz", + "integrity": "sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==", + "dependencies": { + "@abp/core": "~10.3.0", + "luxon": "^3.7.2" + } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "requires": { - "ansi-wrap": "0.1.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/malihu-custom-scrollbar-plugin": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz", + "integrity": "sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==", + "dependencies": { + "@abp/core": "~10.3.0", + "malihu-custom-scrollbar-plugin": "^3.1.5" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/select2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-10.3.0.tgz", + "integrity": "sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==", + "dependencies": { + "@abp/core": "~10.3.0", + "select2": "^4.0.13" + } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/timeago": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-10.3.0.tgz", + "integrity": "sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==", + "dependencies": { + "@abp/jquery": "~10.3.0", + "timeago": "^1.6.7" + } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "just-compare": "^2.3.0" } }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "requires": { - "buffer-equal": "^1.0.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==", + "engines": { + "node": ">=6" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } }, - "arr-diff": { + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/jquery-validation-unobtrusive": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "requires": { - "make-iterator": "^1.0.0" + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz", + "integrity": "sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ==", + "dependencies": { + "jquery": "^3.6.0", + "jquery-validation": ">=1.19" } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "requires": { - "make-iterator": "^1.0.0" + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite/node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "engines": { + "node": ">=12" } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, + "node_modules/@abp/bootstrap-daterangepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz", + "integrity": "sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==", "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } + "@abp/moment": "~10.3.0", + "bootstrap-daterangepicker": "^3.1.0" } }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "requires": { - "is-number": "^4.0.0" - }, + "node_modules/@abp/datatables.net-bs5": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz", + "integrity": "sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==", "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } + "@abp/datatables.net": "~10.3.0", + "datatables.net-bs5": "^2.3.4" } }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "@abp/utils": "~10.3.0" } }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/datatables.net": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-10.3.0.tgz", + "integrity": "sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==", + "dependencies": { + "@abp/jquery": "~10.3.0", + "datatables.net": "^2.3.4" } }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "requires": { - "async-done": "^1.2.2" + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", + "dependencies": { + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" } }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, + "node_modules/@abp/datatables.net-bs5/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "just-compare": "^2.3.0" } }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" + "node_modules/@abp/datatables.net-bs5/node_modules/datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", + "dependencies": { + "jquery": ">=1.7" } }, - "bootstrap": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", - "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" + "node_modules/@abp/datatables.net-bs5/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" }, - "bootstrap-datepicker": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.9.0.tgz", - "integrity": "sha512-9rYYbaVOheGYxjOr/+bJCmRPihfy+LkLSg4fIFMT9Od8WwWB/MB50w0JO1eBgKUMbb7PFHQD5uAfI3ArAxZRXA==", - "requires": { - "jquery": ">=1.7.1 <4.0.0" + "node_modules/@abp/moment": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-10.3.0.tgz", + "integrity": "sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==", + "dependencies": { + "moment": "^2.30.1" } }, - "bootstrap-v4-rtl": { - "version": "4.4.1-2", - "resolved": "https://registry.npmjs.org/bootstrap-v4-rtl/-/bootstrap-v4-rtl-4.4.1-2.tgz", - "integrity": "sha512-x9jZLEQzeOlkfxnR73aE/LjTD6hlqU6BbKVKdGasDByEP7dHBaxYaDGX54pfpHTom2QFqQ3t6y0WkDZW6DrQhw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@abp/popper.js": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/popper.js/-/popper.js-10.3.0.tgz", + "integrity": "sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==", + "dependencies": { + "@abp/core": "~10.3.0", + "@popperjs/core": "^2.11.8" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, + "node_modules/@abp/popper.js/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "@abp/utils": "~10.3.0" } }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "node_modules/@abp/popper.js/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "dependencies": { + "just-compare": "^2.3.0" } }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "node_modules/@abp/popper.js/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, + "node_modules/@abp/sweetalert2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz", + "integrity": "sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==", "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } + "@abp/core": "~10.3.0", + "sweetalert2": "^11.23.0" } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "node_modules/@abp/sweetalert2/node_modules/@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "dependencies": { + "@abp/utils": "~10.3.0" } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "node_modules/@abp/sweetalert2/node_modules/@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "dependencies": { + "just-compare": "^2.3.0" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "node_modules/@abp/sweetalert2/node_modules/just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/bootstrap-datepicker": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.1.tgz", + "integrity": "sha512-GIe+fsLp9Hi30oW7L2v2Q9/a4+aojrIA2p4ZagtLuKw2lpfQgjJjM0L6vl/lYQydGXWUbpoKbEC/O5tzWIkEKQ==", + "dependencies": { + "jquery": ">=3.4.0 <4.0.0" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "node_modules/bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" } }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "node_modules/datatables.net-bs5": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.8.tgz", + "integrity": "sha512-TbFH99QSWm93Kn3teHLFKeyOqYbaiddlHvRFdXUwAvh/fjTMhACWmHG+I43ss8d23OEFHV0WIbN4lpPusZm5zw==", + "dependencies": { + "datatables.net": "2.3.8", + "jquery": ">=1.7" } }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" + "node_modules/datatables.net-bs5/node_modules/datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", + "dependencies": { + "jquery": ">=1.7" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "node_modules/jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "node_modules/jquery-validation": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.22.1.tgz", + "integrity": "sha512-ePLXLWK7Rh5eR652YsuIu7YPeGlCXrsJUteVw5iZopiU17yaMd3FaDggs6yyNMl56p8TYVeDRmKGK3fPZrMeQw==", + "peerDependencies": { + "jquery": "^1.7 || ^2.0 || ^3.1 || ^4.0" } }, - "datatables.net": { - "version": "1.10.23", - "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.23.tgz", - "integrity": "sha512-we3tlNkzpxvgkKKlTxTMXPCt35untVXNg8zUYWpQyC1U5vJc+lT0+Zdc1ztK8d3lh5CfdnuFde2p8n3XwaGl3Q==", - "requires": { - "jquery": ">=1.7" - } + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" }, - "datatables.net-bs4": { - "version": "1.10.23", - "resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.10.23.tgz", - "integrity": "sha512-ChUB8t5t5uzPnJYTPXx2DOvnlm2shz8OadXrKoFavOadB308OuwHVxSldYq9+KGedCeiVxEjNqcaV4nFSXkRsw==", - "requires": { - "datatables.net": "1.10.23", - "jquery": ">=1.7" + "node_modules/malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha1-MQzsxeWUFaHCnp37XStuAdZqKe8=", + "dependencies": { + "jquery-mousewheel": ">=3.0.6" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "node_modules/sweetalert2": { + "version": "11.26.24", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.26.24.tgz", + "integrity": "sha512-SLgukW4wicewpW5VOukSXY5Z6DL/z7HCOK2ODSjmQPiSphCN8gJAmh9npoceXOtBRNoDN0xIz+zHYthtfiHmjg==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "requires": { - "kind-of": "^5.0.2" - }, + "node_modules/timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "jquery": ">=1.5.0 <4.0" } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + } + }, + "dependencies": { + "@abp/aspnetcore.components.server.leptonxlitetheme": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-5.3.0.tgz", + "integrity": "sha512-rSkFUgDJiZQ/cKs20AVwyb1YS9KtUwP+OiG4Mr+zIst+GMsLOfK7ZBMd6qlGFN+0dQWVt89EfYckOJimsNE9xg==", "requires": { - "object-keys": "^1.0.12" + "@abp/aspnetcore.components.server.theming": "~10.3.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "@abp/aspnetcore.components.server.theming": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-10.3.0.tgz", + "integrity": "sha512-s9MtBQHL5GQAHrZCRczgd0HOWM1++ImeEytT6/znaQRf4iEsR91+MxZdsfuuW4apBJwNO2QqCGefKTmzpxUBzg==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "@abp/bootstrap": "~10.3.0", + "@abp/font-awesome": "~10.3.0" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", + "requires": { + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" + } + }, + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "requires": { - "kind-of": "^6.0.0" + "@abp/utils": "~10.3.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", "requires": { - "kind-of": "^6.0.0" + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "just-compare": "^2.3.0" } + }, + "@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==" + }, + "bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "requires": {} + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-5.3.0.tgz", + "integrity": "sha512-gB+Vczz5ZY7wOUjGWgJdcFbhbFRG4nOH/5HMpXWtBxuigapjoofubrgDqVVsOzVtremDRy/uUZomYlEdWiTpQg==", "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "@abp/aspnetcore.mvc.ui": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz", + "integrity": "sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==", "requires": { - "is-descriptor": "^0.1.0" + "ansi-colors": "^4.1.3" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz", + "integrity": "sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==", "requires": { - "is-extendable": "^0.1.0" + "@abp/aspnetcore.mvc.ui": "~10.3.0", + "@abp/bootstrap": "~10.3.0", + "@abp/bootstrap-datepicker": "~10.3.0", + "@abp/bootstrap-daterangepicker": "~10.3.0", + "@abp/datatables.net-bs5": "~10.3.0", + "@abp/font-awesome": "~10.3.0", + "@abp/jquery-validation-unobtrusive": "~10.3.0", + "@abp/lodash": "~10.3.0", + "@abp/luxon": "~10.3.0", + "@abp/malihu-custom-scrollbar-plugin": "~10.3.0", + "@abp/moment": "~10.3.0", + "@abp/select2": "~10.3.0", + "@abp/sweetalert2": "~10.3.0", + "@abp/timeago": "~10.3.0" } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", - "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", - "integrity": "sha1-QlFPhAFdE1bK9Rh5ad+yvBvaCCM=" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + }, + "@abp/bootstrap": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz", + "integrity": "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==", "requires": { - "is-plain-object": "^2.0.4" + "@abp/core": "~10.3.0", + "@abp/popper.js": "~10.3.0", + "bootstrap": "^5.3.8" } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + }, + "@abp/bootstrap-datepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz", + "integrity": "sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==", "requires": { - "is-descriptor": "^1.0.0" + "bootstrap-datepicker": "^1.10.1" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", "requires": { - "is-extendable": "^0.1.0" + "@abp/utils": "~10.3.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "@abp/font-awesome": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz", + "integrity": "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==", "requires": { - "kind-of": "^6.0.0" + "@abp/core": "~10.3.0", + "@fortawesome/fontawesome-free": "^7.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", "requires": { - "kind-of": "^6.0.0" + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "@abp/jquery-validation": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz", + "integrity": "sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@abp/jquery": "~10.3.0", + "jquery-validation": "^1.21.0" } - } - } - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + }, + "@abp/jquery-validation-unobtrusive": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz", + "integrity": "sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==", "requires": { - "is-extendable": "^0.1.0" + "@abp/jquery-validation": "~10.3.0", + "jquery-validation-unobtrusive": "^4.0.0" } - } - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + }, + "@abp/lodash": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-10.3.0.tgz", + "integrity": "sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "@abp/core": "~10.3.0", + "lodash": "^4.17.21" } - } - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "^1.0.1" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + }, + "@abp/luxon": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-10.3.0.tgz", + "integrity": "sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==", "requires": { - "is-extglob": "^2.1.0" + "@abp/core": "~10.3.0", + "luxon": "^3.7.2" } - } - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + }, + "@abp/malihu-custom-scrollbar-plugin": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz", + "integrity": "sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==", "requires": { - "ansi-wrap": "^0.1.0" + "@abp/core": "~10.3.0", + "malihu-custom-scrollbar-plugin": "^3.1.5" } }, - "gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "@abp/select2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-10.3.0.tgz", + "integrity": "sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==", "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" + "@abp/core": "~10.3.0", + "select2": "^4.0.13" } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "requires": { - "glogg": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { + }, + "@abp/timeago": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-10.3.0.tgz", + "integrity": "sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==", + "requires": { + "@abp/jquery": "~10.3.0", + "timeago": "^1.6.7" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "requires": { + "just-compare": "^2.3.0" + } + }, + "@fortawesome/fontawesome-free": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz", + "integrity": "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==" + }, + "bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "requires": {} + }, + "jquery-validation-unobtrusive": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz", + "integrity": "sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ==", "requires": { - "is-buffer": "^1.1.5" + "jquery": "^3.6.0", + "jquery-validation": ">=1.19" } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + }, + "luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==" } } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "@abp/bootstrap-daterangepicker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz", + "integrity": "sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==", "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "@abp/moment": "~10.3.0", + "bootstrap-daterangepicker": "^3.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "@abp/datatables.net-bs5": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz", + "integrity": "sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==", "requires": { - "kind-of": "^3.0.2" + "@abp/datatables.net": "~10.3.0", + "datatables.net-bs5": "^2.3.4" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "requires": { + "@abp/utils": "~10.3.0" + } + }, + "@abp/datatables.net": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-10.3.0.tgz", + "integrity": "sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==", + "requires": { + "@abp/jquery": "~10.3.0", + "datatables.net": "^2.3.4" + } + }, + "@abp/jquery": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz", + "integrity": "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==", + "requires": { + "@abp/core": "~10.3.0", + "jquery": "~3.7.1" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "requires": { + "just-compare": "^2.3.0" + } + }, + "datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", "requires": { - "is-buffer": "^1.1.5" + "jquery": ">=1.7" } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "@abp/moment": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-10.3.0.tgz", + "integrity": "sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==", "requires": { - "has": "^1.0.3" + "moment": "^2.30.1" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "@abp/popper.js": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/popper.js/-/popper.js-10.3.0.tgz", + "integrity": "sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==", "requires": { - "kind-of": "^3.0.2" + "@abp/core": "~10.3.0", + "@popperjs/core": "^2.11.8" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "requires": { + "@abp/utils": "~10.3.0" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", "requires": { - "is-buffer": "^1.1.5" + "just-compare": "^2.3.0" } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "@abp/sweetalert2": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz", + "integrity": "sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@abp/core": "~10.3.0", + "sweetalert2": "^11.23.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "@abp/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz", + "integrity": "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==", + "requires": { + "@abp/utils": "~10.3.0" + } + }, + "@abp/utils": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==", + "requires": { + "just-compare": "^2.3.0" + } + }, + "just-compare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz", + "integrity": "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" } } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bootstrap-datepicker": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.1.tgz", + "integrity": "sha512-GIe+fsLp9Hi30oW7L2v2Q9/a4+aojrIA2p4ZagtLuKw2lpfQgjJjM0L6vl/lYQydGXWUbpoKbEC/O5tzWIkEKQ==", "requires": { - "number-is-nan": "^1.0.0" + "jquery": ">=3.4.0 <4.0.0" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", "requires": { - "is-extglob": "^2.1.1" + "jquery": ">=1.10", + "moment": "^2.9.0" } }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "datatables.net-bs5": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.8.tgz", + "integrity": "sha512-TbFH99QSWm93Kn3teHLFKeyOqYbaiddlHvRFdXUwAvh/fjTMhACWmHG+I43ss8d23OEFHV0WIbN4lpPusZm5zw==", "requires": { - "kind-of": "^3.0.2" + "datatables.net": "2.3.8", + "jquery": ">=1.7" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "datatables.net": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz", + "integrity": "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==", "requires": { - "is-buffer": "^1.1.5" + "jquery": ">=1.7" } } } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, "jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" - }, - "jquery-form": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", - "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", - "requires": { - "jquery": ">=1.7.2" - } + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, "jquery-mousewheel": { "version": "3.1.13", @@ -1735,125 +992,15 @@ "integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" }, "jquery-validation": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.19.3.tgz", - "integrity": "sha512-iXxCS5W7STthSTMFX/NDZfWHBLbJ1behVK3eAgHXAV8/0vRa9M4tiqHvJMr39VGWHMGdlkhrtrkBuaL2UlE8yw==" - }, - "jquery-validation-unobtrusive": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", - "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", - "requires": { - "jquery": "^3.5.1", - "jquery-validation": ">=1.16" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "just-compare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.3.0.tgz", - "integrity": "sha512-i4QNo3mPYubDmAwPbCKQl5C2b5s0yudP5V5GDp6lGR1PM22Em4Idf7mcaIzXYcL6/RLdZtuGrAqkBe9RYM/t4w==" - }, - "just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.22.1.tgz", + "integrity": "sha512-ePLXLWK7Rh5eR652YsuIu7YPeGlCXrsJUteVw5iZopiU17yaMd3FaDggs6yyNMl56p8TYVeDRmKGK3fPZrMeQw==", + "requires": {} }, "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "luxon": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.26.0.tgz", - "integrity": "sha512-+V5QIQ5f6CDXQpWNICELwjwuHdqeJM1UenlZWx5ujcRMc9venvluCjFb4t5NYLhb6IhkbMVOxzVuOqkgMxee2A==" - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "requires": { - "kind-of": "^6.0.2" - } + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" }, "malihu-custom-scrollbar-plugin": { "version": "3.1.5", @@ -1863,1334 +1010,28 @@ "jquery-mousewheel": ">=3.0.6" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } + "select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" - }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "requires": { - "once": "^1.3.2" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-polyfill": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", - "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=" - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "select2": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", - "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "requires": { - "sver-compat": "^1.5.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "sweetalert": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz", - "integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==", - "requires": { - "es6-object-assign": "^1.1.0", - "promise-polyfill": "^6.0.2" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" - }, - "timeago": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", - "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "sweetalert2": { + "version": "11.26.24", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.26.24.tgz", + "integrity": "sha512-SLgukW4wicewpW5VOukSXY5Z6DL/z7HCOK2ODSjmQPiSphCN8gJAmh9npoceXOtBRNoDN0xIz+zHYthtfiHmjg==" + }, + "timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", "requires": { "jquery": ">=1.5.0 <4.0" } - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "requires": { - "through2": "^2.0.3" - } - }, - "toastr": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", - "integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=", - "requires": { - "jquery": ">=1.12.0" - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" - }, - "undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" - }, - "vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "yargs": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", - "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "5.0.0-security.0" - } - }, - "yargs-parser": { - "version": "5.0.0-security.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", - "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } } } } diff --git a/samples/WebAppBlazorServer/src/BookStore.Blazor/package.json b/samples/WebAppBlazorServer/src/BookStore.Blazor/package.json index 7d42c69..0479161 100644 --- a/samples/WebAppBlazorServer/src/BookStore.Blazor/package.json +++ b/samples/WebAppBlazorServer/src/BookStore.Blazor/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~4.2.0", - "@abp/aspnetcore.components.server.leptonxlitetheme": "~4.2.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0", + "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0" } } diff --git a/samples/WebAppBlazorServer/src/BookStore.Blazor/yarn.lock b/samples/WebAppBlazorServer/src/BookStore.Blazor/yarn.lock index 421dd0a..363a013 100644 --- a/samples/WebAppBlazorServer/src/BookStore.Blazor/yarn.lock +++ b/samples/WebAppBlazorServer/src/BookStore.Blazor/yarn.lock @@ -2,320 +2,324 @@ # yarn lockfile v1 -"@abp/aspnetcore.components.server.leptonxlitetheme@~4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-4.2.1.tgz#3fb1c687940052cc20e93a282ce8fbc61c0844e7" - integrity sha512-2DgQMU6MPAJ7WmcJUaoouk4eAXP8XhJftdcPh+BjB9rCu5FDQnWHqhT6hQOz1DR+KQ3vD3R8jbyZis1sB8InSw== - dependencies: - "@abp/aspnetcore.components.server.theming" "~9.2.1" - -"@abp/aspnetcore.components.server.theming@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-9.2.1.tgz#9e9e01f6356b4a5616fb706460b0cde53204075a" - integrity sha512-fxOJwzG7YiMYLxYHKLPL3Cv0pynfivOCLqhG+v60Hz4VTUIDqJDy4EJ2EN+LcEAkpYGglzGNmbGh5je+2anzCA== - dependencies: - "@abp/bootstrap" "~9.2.1" - "@abp/font-awesome" "~9.2.1" - -"@abp/aspnetcore.mvc.ui.theme.leptonxlite@~4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-4.2.1.tgz#3e3cc78b0d1d56113d459d61e01125bffada0c21" - integrity sha512-unZMV9HY13Kq00FZROVlo9po+foivENEoM7jUmZWlxOQjxBwa3/VJaxwQIXd9DZOqdpJpi5zUv/pSb6DqiZkfg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.1.tgz#35f6de6f106c80592ce70d36b6e8b20c64862803" - integrity sha512-kZz1tgUguGHxwG1MRkbkeXn9sIjbCOHJcBU+w+XuWwCqigM2yaE+KgnASDcjCrjQiPu6i73hf9OwtxXY1UbGMQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.1" - "@abp/bootstrap" "~9.2.1" - "@abp/bootstrap-datepicker" "~9.2.1" - "@abp/bootstrap-daterangepicker" "~9.2.1" - "@abp/datatables.net-bs5" "~9.2.1" - "@abp/font-awesome" "~9.2.1" - "@abp/jquery-form" "~9.2.1" - "@abp/jquery-validation-unobtrusive" "~9.2.1" - "@abp/lodash" "~9.2.1" - "@abp/luxon" "~9.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.1" - "@abp/moment" "~9.2.1" - "@abp/select2" "~9.2.1" - "@abp/sweetalert2" "~9.2.1" - "@abp/timeago" "~9.2.1" - -"@abp/aspnetcore.mvc.ui@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.1.tgz#8b30f830d85f7e1f4a386b0ef8d0444e2550bc42" - integrity sha512-0C41JpevGynbyHGeKkqLUSVNK64QETsKVyVWY4fSZkChGHlD09Fn3qIlHJInpBqJ9qNYs5VQ7RRP02PSum9mAg== - dependencies: - ansi-colors "^4.1.3" - -"@abp/bootstrap-datepicker@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.1.tgz#373c8715d175ca23a8871bacdb5f017b070254aa" - integrity sha512-uaCpz5EDSZYDacjnYoqTiktTDFGnGJPEHYh5eG4BORlQta53Hvak7m2CkRVjdOaXtuPLi6EbWPSh2bHIfhKRyQ== - dependencies: - bootstrap-datepicker "^1.10.0" - -"@abp/bootstrap-daterangepicker@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.1.tgz#b49e17a4753b09d49bfad6774a7f185e7e5bf71c" - integrity sha512-kd6LEACfx7CBIQOAiE/RHFp/WnthE2iz/eivl3fwuz1VgAO0CBIQ7hYoX91GaAIQgt+OAcgGbOl2G6E284EM9Q== - dependencies: - bootstrap-daterangepicker "^3.1.0" - -"@abp/bootstrap@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.1.tgz#ddf624e95f1dab4a8fce8d20b6dccd2b3d3f1679" - integrity sha512-NghAVP7M/Y2y9GYDu7IWo8oW7EyJEO+1NnPqCudpjWX4C6B27d7ghJ7I0MfrHoRq9/hBJZ07AKf3KMAZQD99ng== - dependencies: - "@abp/core" "~9.2.1" - bootstrap "^5.3.3" - -"@abp/core@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.1.tgz#f7c635f1fe88fc3fbbc4accaa6aee2dc3b5631a7" - integrity sha512-onCzS2w+U+wBv5FRDCVE176AiyZDMm1D5GaqiEnpuAwsBncFpFyZedC95dtPmykagJbpOvHVSPOLyZ2jzGjcYg== - dependencies: - "@abp/utils" "~9.2.1" - -"@abp/datatables.net-bs5@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.1.tgz#ff69059e96d5341166fa8d08390e9bb352010e5d" - integrity sha512-NEkf8xWTIYFDs9lAAPs0hOL2UD+pnVwyix/9IAtip3BIkyPFpLCniNWbu1WhuNJpfmLHrWPSqIrouR80gGL7PQ== - dependencies: - "@abp/datatables.net" "~9.2.1" - datatables.net-bs5 "^2.1.8" - -"@abp/datatables.net@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.1.tgz#0a5ab74ca44cd785efb487f0447e8acdea9d7aa1" - integrity sha512-A9TSPRNUV0eeCPnpGV9Htu9ZylUf3e03smYcbEROQHe+htwhcEV5dz8SLAI90baPi2g7VnyPav/3efaqo+ETdg== - dependencies: - "@abp/jquery" "~9.2.1" - datatables.net "^2.1.8" - -"@abp/font-awesome@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.1.tgz#a387f1cf457bdb6e3cd30bd9f4c455a41f8ca0b1" - integrity sha512-RVo3422BItdAAmafSCH/mT1Ux8q6yUz7nswGep4beP1k1VfmFExj1mgVphIpAlH3DWyzfnwUOq7lLWf/Ul2dOA== - dependencies: - "@abp/core" "~9.2.1" - "@fortawesome/fontawesome-free" "^6.6.0" - -"@abp/jquery-form@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.1.tgz#727b391c36e8ff46b62cb01be14715a05fe74b4f" - integrity sha512-n6EpUNNRzilOzP5rYTWr9K2mPQbvBQAuxPiwUZpfwf+QpJrs+NppJMaC06HFbHcSkDDy/utd+P1/sqWaJjL/tw== - dependencies: - "@abp/jquery" "~9.2.1" - jquery-form "^4.3.0" - -"@abp/jquery-validation-unobtrusive@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.1.tgz#98215811818e618d96a1dcac6419962fd39c6fef" - integrity sha512-7no3KxRW3agw4EAM5iTvQjE4+m9JrjuMAV20gAU0uVPB2+sHlluEAks0IU9wz76T+Ac7osferUZz33LgdDvIaw== - dependencies: - "@abp/jquery-validation" "~9.2.1" - jquery-validation-unobtrusive "^4.0.0" - -"@abp/jquery-validation@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.1.tgz#559c581523e4e098f2bf67627dfe6c7ef0e1c3c1" - integrity sha512-AEGm3agbwr1f5kmXvpBeiDmsS22P88zVr8NJDICGsgBxZofKndXsDFciNZGu6lXF5qXp8AwGRi//QPaCeQsP8g== - dependencies: - "@abp/jquery" "~9.2.1" - jquery-validation "^1.21.0" - -"@abp/jquery@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.1.tgz#bbcc9eab9cef528a8163f5062665ffcf2b87c2f0" - integrity sha512-gdDIKMNEpeUdzUu5C/g6j568ytJ7ifaDxBr1NYf2kJ34p7y6rrBmyY+sL+xR3ZlcGgyPGXyFhTLRD7qTjXlkPg== - dependencies: - "@abp/core" "~9.2.1" - jquery "~3.7.1" - -"@abp/lodash@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.1.tgz#a80ab7a908a0332b721277b1193209187fab57d8" - integrity sha512-I2+XYqwMi3+FXCv4xp5hBoJmOszg2WR1gnGc+Qd0zwb2VAbG4MvKVFgM/GUAFD8EKlquGyPf3f+4l5FkaPFkrQ== - dependencies: - "@abp/core" "~9.2.1" - lodash "^4.17.21" - -"@abp/luxon@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.1.tgz#7e3d197425813cfc6932cd3f9f09f97ecd2f4fc7" - integrity sha512-2tyOZRmq9jQN0Uhg8WaHfEzL0Xeew04sbA8O9bqw28psRbXaWXEVdElRMBNt50sZkFPhHFoxxFN7PR8obs0Qug== - dependencies: - "@abp/core" "~9.2.1" - luxon "^3.5.0" - -"@abp/malihu-custom-scrollbar-plugin@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.1.tgz#b0fa249885d442ba84657c7705df73851cb56db1" - integrity sha512-fzgQZsbN0xLMxEWh7znKAI4j0CPb8ciT/3x+QguGZDJf7OFw0YnEWctfEYJnnGG28HpHs1mh64gjqoeceHy0HQ== - dependencies: - "@abp/core" "~9.2.1" - malihu-custom-scrollbar-plugin "^3.1.5" - -"@abp/moment@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.1.tgz#9982c65d63171962091b08fc4e0d1ea98cc1f0eb" - integrity sha512-V4KH1WmahP0BoaQGLEY4a0AQyfk1cLeNMk3qCPtuqIUbOFwimJY3oQgpelilEwjI3oD/upMzGphjLGrfQLRM2A== - dependencies: - moment "^2.30.1" - -"@abp/select2@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.1.tgz#5c3c6a4b0018b533491d6a46540069782559c57a" - integrity sha512-p743cnoohNLKX11ptnBcN5z9+ZyC11M9mwRR6SWbW5f1Eqvbkq03bf2mDFUfukCNis4RefeURZunPlsBOmRn/A== +"@abp/aspnetcore.components.server.leptonxlitetheme@~5.3.0": + "integrity" "sha512-rSkFUgDJiZQ/cKs20AVwyb1YS9KtUwP+OiG4Mr+zIst+GMsLOfK7ZBMd6qlGFN+0dQWVt89EfYckOJimsNE9xg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.components.server.leptonxlitetheme/-/aspnetcore.components.server.leptonxlitetheme-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "@abp/aspnetcore.components.server.theming" "~10.3.0" + +"@abp/aspnetcore.components.server.theming@~10.3.0": + "integrity" "sha512-s9MtBQHL5GQAHrZCRczgd0HOWM1++ImeEytT6/znaQRf4iEsR91+MxZdsfuuW4apBJwNO2QqCGefKTmzpxUBzg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/bootstrap" "~10.3.0" + "@abp/font-awesome" "~10.3.0" + +"@abp/aspnetcore.mvc.ui.theme.leptonxlite@~5.3.0": + "integrity" "sha512-gB+Vczz5ZY7wOUjGWgJdcFbhbFRG4nOH/5HMpXWtBxuigapjoofubrgDqVVsOzVtremDRy/uUZomYlEdWiTpQg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0": + "integrity" "sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/aspnetcore.mvc.ui" "~10.3.0" + "@abp/bootstrap" "~10.3.0" + "@abp/bootstrap-datepicker" "~10.3.0" + "@abp/bootstrap-daterangepicker" "~10.3.0" + "@abp/datatables.net-bs5" "~10.3.0" + "@abp/font-awesome" "~10.3.0" + "@abp/jquery-validation-unobtrusive" "~10.3.0" + "@abp/lodash" "~10.3.0" + "@abp/luxon" "~10.3.0" + "@abp/malihu-custom-scrollbar-plugin" "~10.3.0" + "@abp/moment" "~10.3.0" + "@abp/select2" "~10.3.0" + "@abp/sweetalert2" "~10.3.0" + "@abp/timeago" "~10.3.0" + +"@abp/aspnetcore.mvc.ui@~10.3.0": + "integrity" "sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==" + "resolved" "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "ansi-colors" "^4.1.3" + +"@abp/bootstrap-datepicker@~10.3.0": + "integrity" "sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==" + "resolved" "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "bootstrap-datepicker" "^1.10.1" + +"@abp/bootstrap-daterangepicker@~10.3.0": + "integrity" "sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==" + "resolved" "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/moment" "~10.3.0" + "bootstrap-daterangepicker" "^3.1.0" + +"@abp/bootstrap@~10.3.0": + "integrity" "sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==" + "resolved" "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "@abp/popper.js" "~10.3.0" + "bootstrap" "^5.3.8" + +"@abp/core@~10.3.0": + "integrity" "sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==" + "resolved" "https://registry.npmjs.org/@abp/core/-/core-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/utils" "~10.3.0" + +"@abp/datatables.net-bs5@~10.3.0": + "integrity" "sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==" + "resolved" "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/datatables.net" "~10.3.0" + "datatables.net-bs5" "^2.3.4" + +"@abp/datatables.net@~10.3.0": + "integrity" "sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==" + "resolved" "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/jquery" "~10.3.0" + "datatables.net" "^2.3.4" + +"@abp/font-awesome@~10.3.0": + "integrity" "sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==" + "resolved" "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "@fortawesome/fontawesome-free" "^7.0.1" + +"@abp/jquery-validation-unobtrusive@~10.3.0": + "integrity" "sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==" + "resolved" "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/jquery-validation" "~10.3.0" + "jquery-validation-unobtrusive" "^4.0.0" + +"@abp/jquery-validation@~10.3.0": + "integrity" "sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==" + "resolved" "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/jquery" "~10.3.0" + "jquery-validation" "^1.21.0" + +"@abp/jquery@~10.3.0": + "integrity" "sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==" + "resolved" "https://registry.npmjs.org/@abp/jquery/-/jquery-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "jquery" "~3.7.1" + +"@abp/lodash@~10.3.0": + "integrity" "sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==" + "resolved" "https://registry.npmjs.org/@abp/lodash/-/lodash-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "@abp/core" "~10.3.0" + "lodash" "^4.17.21" + +"@abp/luxon@~10.3.0": + "integrity" "sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==" + "resolved" "https://registry.npmjs.org/@abp/luxon/-/luxon-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@abp/core" "~9.2.1" - select2 "^4.0.13" + "@abp/core" "~10.3.0" + "luxon" "^3.7.2" -"@abp/sweetalert2@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.1.tgz#3db7e33855614460d2fdc5e3f8b65530902fcd9a" - integrity sha512-fJYLVxc5pAJoSLIcQYf5xRkPVnVQi/5+xwTgOePy3QeygOrAMpGS7vy+MIq7Mn+tBoEFlQ/Jn+NoB04AIYYPFw== +"@abp/malihu-custom-scrollbar-plugin@~10.3.0": + "integrity" "sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==" + "resolved" "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@abp/core" "~9.2.1" - sweetalert2 "^11.14.1" + "@abp/core" "~10.3.0" + "malihu-custom-scrollbar-plugin" "^3.1.5" -"@abp/timeago@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.1.tgz#6904e2d7bda57b436e3385c5fd1899b9cd806dd8" - integrity sha512-fmsPuBouWR/BvhXN53yJpg1Se06uIL7ox8XOgx1MHCe+1vxbXnFCtM2VujfowWtOSTJOzbL1DHcDpFE7JlkOag== +"@abp/moment@~10.3.0": + "integrity" "sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==" + "resolved" "https://registry.npmjs.org/@abp/moment/-/moment-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@abp/jquery" "~9.2.1" - timeago "^1.6.7" + "moment" "^2.30.1" -"@abp/utils@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.1.tgz#803fd48927ae332309f8a7005806c6aa6e499750" - integrity sha512-+j0SNB/K2j2xTTijy/qCL3ds2c/7OW4nrJ8Ccq17WtEqP+jk2TtJi0EnLqhNTDih0A++XV+pcftUC+cQ0h1cUw== +"@abp/popper.js@~10.3.0": + "integrity" "sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==" + "resolved" "https://registry.npmjs.org/@abp/popper.js/-/popper.js-10.3.0.tgz" + "version" "10.3.0" dependencies: - just-compare "^2.3.0" - -"@fortawesome/fontawesome-free@^6.6.0": - version "6.7.2" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz#8249de9b7e22fcb3ceb5e66090c30a1d5492b81a" - integrity sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA== + "@abp/core" "~10.3.0" + "@popperjs/core" "^2.11.8" -ansi-colors@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -bootstrap-datepicker@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz#61612bbe8bf0a69a5bce32bbcdda93ebb6ccf24a" - integrity sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg== - dependencies: - jquery ">=3.4.0 <4.0.0" - -bootstrap-daterangepicker@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz#632e6fb2de4b6360c5c0a9d5f6adb9aace051fe8" - integrity sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g== +"@abp/select2@~10.3.0": + "integrity" "sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==" + "resolved" "https://registry.npmjs.org/@abp/select2/-/select2-10.3.0.tgz" + "version" "10.3.0" dependencies: - jquery ">=1.10" - moment "^2.9.0" - -bootstrap@^5.3.3: - version "5.3.7" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.7.tgz#8640065036124d961d885d80b5945745e1154d90" - integrity sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw== + "@abp/core" "~10.3.0" + "select2" "^4.0.13" -datatables.net-bs5@^2.1.8: - version "2.3.2" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.2.tgz#cffb8007a9f752a997bc70c0dbe9f545edfd18eb" - integrity sha512-1rh0ZTLoiziIQ4oAtgr+IOYVgJfAIceDnbDe535u8kv191pBAdTrKF6ovQO98Xy9mDXLdLNB7QCrLiV/sgPoQw== +"@abp/sweetalert2@~10.3.0": + "integrity" "sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==" + "resolved" "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz" + "version" "10.3.0" dependencies: - datatables.net "2.3.2" - jquery ">=1.7" + "@abp/core" "~10.3.0" + "sweetalert2" "^11.23.0" -datatables.net@2.3.2, datatables.net@^2.1.8: - version "2.3.2" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.2.tgz#6821f6288e6ad3cb6879c33e0e7e11d4091d330b" - integrity sha512-31TzwIQM0+pr2ZOEOEH6dsHd/WSAl5GDDGPezOHPI3mM2NK4lcDyOoG8xXeWmSbVfbi852LNK5C84fpp4Q+qxg== - dependencies: - jquery ">=1.7" - -jquery-form@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/jquery-form/-/jquery-form-4.3.0.tgz#7d3961c314a1f2d15298f4af1d3943f54f4149c6" - integrity sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ== +"@abp/timeago@~10.3.0": + "integrity" "sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==" + "resolved" "https://registry.npmjs.org/@abp/timeago/-/timeago-10.3.0.tgz" + "version" "10.3.0" dependencies: - jquery ">=1.7.2" - -jquery-mousewheel@>=3.0.6: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.2.2.tgz#48c833f6260ee0c46d438a999e7d0060ec9eed0b" - integrity sha512-JP71xTAg08ZY3hcs9ZbYUZ5i+dkSsz4yRl/zpWkAmtzc+kMs5EfPkpkINSidiLYMaR0MTo3DfFGF9WIezMsFQQ== - dependencies: - jquery ">=1.2.6" - -jquery-validation-unobtrusive@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz#dfcf25a558496a2c883db6021d10f5398d15f99d" - integrity sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ== - dependencies: - jquery "^3.6.0" - jquery-validation ">=1.19" - -jquery-validation@>=1.19, jquery-validation@^1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.21.0.tgz#78fc05ab76020912a246af3661b3f54a438bca93" - integrity sha512-xNot0rlUIgu7duMcQ5qb6MGkGL/Z1PQaRJQoZAURW9+a/2PGOUxY36o/WyNeP2T9R6jvWB8Z9lUVvvQWI/Zs5w== - -jquery@>=1.10, jquery@>=1.2.6, "jquery@>=1.5.0 <4.0", jquery@>=1.7, jquery@>=1.7.2, "jquery@>=3.4.0 <4.0.0", jquery@^3.6.0, jquery@~3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" - integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== - -just-compare@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/just-compare/-/just-compare-2.3.0.tgz#a2adcc1d1940536263275f5a1ef1298bcacfeda7" - integrity sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -luxon@^3.5.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.6.1.tgz#d283ffc4c0076cb0db7885ec6da1c49ba97e47b0" - integrity sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ== - -malihu-custom-scrollbar-plugin@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz#310cecc5e59415a1c29e9dfb5d2b6e01d66a29ef" - integrity sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ== - dependencies: - jquery-mousewheel ">=3.0.6" - -moment@^2.30.1, moment@^2.9.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== - -select2@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/select2/-/select2-4.0.13.tgz#0dbe377df3f96167c4c1626033e924372d8ef44d" - integrity sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw== - -sweetalert2@^11.14.1: - version "11.22.2" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.22.2.tgz#d4d82a2edd4e97024306fe37f1bc64fa576e9bc9" - integrity sha512-GFQGzw8ZXF23PO79WMAYXLl4zYmLiaKqYJwcp5eBF07wiI5BYPbZtKi2pcvVmfUQK+FqL1risJAMxugcPbGIyg== - -timeago@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/timeago/-/timeago-1.6.7.tgz#afd467c29a911e697fc22a81888c7c3022783cb5" - integrity sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ== - dependencies: - jquery ">=1.5.0 <4.0" + "@abp/jquery" "~10.3.0" + "timeago" "^1.6.7" + +"@abp/utils@~10.3.0": + "integrity" "sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==" + "resolved" "https://registry.npmjs.org/@abp/utils/-/utils-10.3.0.tgz" + "version" "10.3.0" + dependencies: + "just-compare" "^2.3.0" + +"@fortawesome/fontawesome-free@^7.0.1": + "integrity" "sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==" + "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz" + "version" "7.2.0" + +"@popperjs/core@^2.11.8": + "integrity" "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" + "version" "2.11.8" + +"ansi-colors@^4.1.3": + "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + "version" "4.1.3" + +"bootstrap-datepicker@^1.10.1": + "integrity" "sha512-GIe+fsLp9Hi30oW7L2v2Q9/a4+aojrIA2p4ZagtLuKw2lpfQgjJjM0L6vl/lYQydGXWUbpoKbEC/O5tzWIkEKQ==" + "resolved" "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.1.tgz" + "version" "1.10.1" + dependencies: + "jquery" ">=3.4.0 <4.0.0" + +"bootstrap-daterangepicker@^3.1.0": + "integrity" "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==" + "resolved" "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "jquery" ">=1.10" + "moment" "^2.9.0" + +"bootstrap@^5.3.8": + "integrity" "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==" + "resolved" "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz" + "version" "5.3.8" + +"datatables.net-bs5@^2.3.4": + "integrity" "sha512-TbFH99QSWm93Kn3teHLFKeyOqYbaiddlHvRFdXUwAvh/fjTMhACWmHG+I43ss8d23OEFHV0WIbN4lpPusZm5zw==" + "resolved" "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "datatables.net" "2.3.8" + "jquery" ">=1.7" + +"datatables.net@^2.3.4": + "integrity" "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==" + "resolved" "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "jquery" ">=1.7" + +"datatables.net@2.3.8": + "integrity" "sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg==" + "resolved" "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "jquery" ">=1.7" + +"jquery-mousewheel@>=3.0.6": + "integrity" "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" + "resolved" "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz" + "version" "3.1.13" + +"jquery-validation-unobtrusive@^4.0.0": + "integrity" "sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ==" + "resolved" "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "jquery" "^3.6.0" + "jquery-validation" ">=1.19" + +"jquery-validation@^1.21.0", "jquery-validation@>=1.19": + "integrity" "sha512-ePLXLWK7Rh5eR652YsuIu7YPeGlCXrsJUteVw5iZopiU17yaMd3FaDggs6yyNMl56p8TYVeDRmKGK3fPZrMeQw==" + "resolved" "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.22.1.tgz" + "version" "1.22.1" + +"jquery@^1.7 || ^2.0 || ^3.1 || ^4.0", "jquery@^3.6.0", "jquery@>=1.10", "jquery@>=1.5.0 <4.0", "jquery@>=1.7", "jquery@>=3.4.0 <4.0.0", "jquery@~3.7.1": + "integrity" "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + "resolved" "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz" + "version" "3.7.1" + +"just-compare@^2.3.0": + "integrity" "sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg==" + "resolved" "https://registry.npmjs.org/just-compare/-/just-compare-2.3.0.tgz" + "version" "2.3.0" + +"lodash@^4.17.21": + "integrity" "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz" + "version" "4.18.1" + +"luxon@^3.7.2": + "integrity" "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==" + "resolved" "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz" + "version" "3.7.2" + +"malihu-custom-scrollbar-plugin@^3.1.5": + "integrity" "sha1-MQzsxeWUFaHCnp37XStuAdZqKe8=" + "resolved" "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "jquery-mousewheel" ">=3.0.6" + +"moment@^2.30.1", "moment@^2.9.0": + "integrity" "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz" + "version" "2.30.1" + +"select2@^4.0.13": + "integrity" "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + "resolved" "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz" + "version" "4.0.13" + +"sweetalert2@^11.23.0": + "integrity" "sha512-SLgukW4wicewpW5VOukSXY5Z6DL/z7HCOK2ODSjmQPiSphCN8gJAmh9npoceXOtBRNoDN0xIz+zHYthtfiHmjg==" + "resolved" "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.26.24.tgz" + "version" "11.26.24" + +"timeago@^1.6.7": + "integrity" "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==" + "resolved" "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz" + "version" "1.6.7" + dependencies: + "jquery" ">=1.5.0 <4.0" diff --git a/samples/WebAppBlazorServer/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs b/samples/WebAppBlazorServer/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs index 3ad09fd..01b67d6 100644 --- a/samples/WebAppBlazorServer/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs +++ b/samples/WebAppBlazorServer/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using BookStore.Data; @@ -26,6 +27,7 @@ public class MongoDbBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITra { var dbContexts = _serviceProvider.GetServices(); var connectionStringResolver = _serviceProvider.GetRequiredService(); + var configuration = _serviceProvider.GetRequiredService(); if (_serviceProvider.GetRequiredService().IsAvailable) { @@ -34,9 +36,22 @@ public class MongoDbBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITra foreach (var dbContext in dbContexts) { - var connectionString = - await connectionStringResolver.ResolveAsync( - ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); + var connectionStringName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); + var connectionString = await connectionStringResolver.ResolveAsync(connectionStringName); + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = await connectionStringResolver.ResolveAsync(); + } + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = configuration.GetConnectionString("Default"); + } + if (connectionString.IsNullOrWhiteSpace()) + { + throw new InvalidOperationException( + $"Could not find a MongoDB connection string for '{connectionStringName}' or 'Default'."); + } + var mongoUrl = new MongoUrl(connectionString); var databaseName = mongoUrl.DatabaseName; var client = new MongoClient(mongoUrl); diff --git a/samples/WebAppBlazorWebAssembly/README.md b/samples/WebAppBlazorWebAssembly/README.md index d07e56c..94d1042 100644 --- a/samples/WebAppBlazorWebAssembly/README.md +++ b/samples/WebAppBlazorWebAssembly/README.md @@ -1,59 +1,64 @@ -# BookStore +# BookStore Blazor WebAssembly Sample -## About this solution +This sample demonstrates the AntDesign theme in an ABP Blazor WebAssembly application. -This is a layered startup solution based on [Domain Driven Design (DDD)](https://abp.io/docs/latest/framework/architecture/domain-driven-design) practises. All the fundamental ABP modules are already installed. Check the [Application Startup Template](https://abp.io/docs/latest/solution-templates/layered-web-application) documentation for more info. +## Prerequisites -### Pre-requirements +- .NET SDK 10.0+ +- Node.js 18 or newer +- MongoDB +- ABP CLI (`dotnet tool install -g Volo.Abp.Cli` if needed) -* [.net10.0+ SDK](https://dotnet.microsoft.com/download/dotnet) -* [Node v18 or 20](https://nodejs.org/en) +## Run -### Configurations +Install front-end libraries: -The solution comes with a default configuration that works out of the box. However, you may consider to change the following configuration before running your solution: - -* Check the `ConnectionStrings` in `appsettings.json` files under the `BookStore.HttpApi.Host` and `BookStore.DbMigrator` projects and change it if you need. - -### Before running the application - -* Run `abp install-libs` command on your solution folder to install client-side package dependencies. This step is automatically done when you create a new solution, if you didn't especially disabled it. However, you should run it yourself if you have first cloned this solution from your source control, or added a new client-side package dependency to your solution. -* Run `BookStore.DbMigrator` to create the initial database. This step is also automatically done when you create a new solution, if you didn't especially disabled it. This should be done in the first run. It is also needed if a new database migration is added to the solution later. +```bash +abp install-libs +``` -#### Generating a Signing Certificate +Apply database migrations and seed data: -In the production environment, you need to use a production signing certificate. ABP Framework sets up signing and encryption certificates in your application and expects an `openiddict.pfx` file in your application. +```bash +dotnet run --project .\src\BookStore.DbMigrator\ +``` -To generate a signing certificate, you can use the following command: +Start the HTTP API host: ```bash -dotnet dev-certs https -v -ep openiddict.pfx -p 2dae3a4f-9e73-4cb7-b7b9-7ec95c44e1a3 +dotnet run --project .\src\BookStore.HttpApi.Host\ ``` -> `2dae3a4f-9e73-4cb7-b7b9-7ec95c44e1a3` is the password of the certificate, you can change it to any password you want. - -It is recommended to use **two** RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. +Start the Blazor WebAssembly host in another terminal: -For more information, please refer to: [OpenIddict Certificate Configuration](https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios) +```bash +dotnet run --project .\src\BookStore.Blazor\ +``` -> Also, see the [Configuring OpenIddict](https://abp.io/docs/latest/Deployment/Configuring-OpenIddict#production-environment) documentation for more information. +Open `https://localhost:44376`. -### Solution structure +## Default Login -This is a layered monolith application that consists of the following applications: +- Username: `admin` +- Password: `1q2w3E*` -* `BookStore.DbMigrator`: A console application which applies the migrations and also seeds the initial data. It is useful on development as well as on production environment. -* `BookStore.HttpApi.Host`: ASP.NET Core API application that is used to expose the APIs to the clients. -* `BookStore.Blazor`: ASP.NET Core Blazor Server application that is the essential web application of the solution. +## What To Verify +- The application uses the refactored AntDesign Pro-style layout. +- The sidebar is responsive and can collapse on smaller screens. +- Authenticated users can open the floating theme settings panel. +- Theme settings apply immediately through the host application service. -## Deploying the application +## Theme Settings Management -Deploying an ABP application follows the same process as deploying any .NET or ASP.NET Core application. However, there are important considerations to keep in mind. For detailed guidance, refer to ABP's [deployment documentation](https://abp.io/docs/latest/Deployment/Index). +This sample is configured with `AntDesignThemeManagement`. -### Additional resources +Go to `Administration -> Settings -> Theme settings management` to control which sections appear in the user-facing panel: -You can see the following resources to learn more about your solution and the ABP Framework: +- `Enable theme settings` +- `Page style setting` +- `Navigation mode` +- `Regional settings` +- `Other settings` -* [Web Application Development Tutorial](https://abp.io/docs/latest/tutorials/book-store/part-1) -* [Application Startup Template](https://abp.io/docs/latest/startup-templates/application/index) +If all child options are disabled, `Enable theme settings` is automatically disabled. diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj b/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj index 670f54f..684c61e 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStore.Blazor.Client.csproj @@ -22,6 +22,7 @@ + diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs b/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs index f4add7b..039ca45 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.Blazor.Client/BookStoreBlazorClientModule.cs @@ -9,6 +9,7 @@ using Volo.Abp.Localization; using BookStore.Localization; using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Routing; using Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme; +using Lsw.Abp.AntDesignThemeManagement.Blazor.WebAssembly; using Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI; using Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI; using Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI; @@ -28,6 +29,7 @@ namespace BookStore.Blazor.Client; typeof(AbpFeatureManagementBlazorWebAssemblyAntDesignModule), typeof(AbpTenantManagementBlazorWebAssemblyAntDesignModule), typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeModule), + typeof(AbpAntDesignThemeManagementBlazorWebAssemblyModule), typeof(AbpMapperlyModule), typeof(BookStoreHttpApiClientModule) )] diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.DbMigrator/appsettings.json b/samples/WebAppBlazorWebAssembly/src/BookStore.DbMigrator/appsettings.json index a3a6440..4de0c90 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.DbMigrator/appsettings.json +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.DbMigrator/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "Default": "mongodb://localhost:27017/BookStore" + "Default": "mongodb://localhost:27017/BookStore_WebAssembly" }, "OpenIddict": { "Applications": { diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.abppkg b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.abppkg index d5b2efb..3a09936 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.abppkg +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.abppkg @@ -1,3 +1,4 @@ { - "role": "host.http-api" -} + "role": "host.http-api", + "projectId": "7c286d0e-2950-4f31-a8bf-5c462e6459bb" +} \ No newline at end of file diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.csproj b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.csproj index 9fe6eab..be4d553 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.csproj +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.csproj @@ -36,6 +36,7 @@ + diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs index 07c1b4c..4d1ffd3 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs @@ -15,7 +15,7 @@ using OpenIddict.Validation.AspNetCore; using OpenIddict.Server.AspNetCore; using BookStore.MongoDB; using BookStore.MultiTenancy; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Volo.Abp; using Volo.Abp.Studio; using Volo.Abp.Account; @@ -38,6 +38,7 @@ using Volo.Abp.OpenIddict; using Volo.Abp.Swashbuckle; using Volo.Abp.Studio.Client.AspNetCore; using Volo.Abp.Security.Claims; +using Lsw.Abp.AntDesignThemeManagement; namespace BookStore; @@ -48,6 +49,7 @@ namespace BookStore; typeof(AbpAutofacModule), typeof(AbpAspNetCoreMultiTenancyModule), typeof(BookStoreApplicationModule), + typeof(AbpAntDesignThemeManagementApplicationModule), typeof(BookStoreMongoDbModule), typeof(AbpAccountWebOpenIddictModule), typeof(AbpSwashbuckleModule), @@ -180,6 +182,7 @@ public class BookStoreHttpApiHostModule : AbpModule Configure(options => { options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + options.ConventionalControllers.Create(typeof(AbpAntDesignThemeManagementApplicationModule).Assembly); }); } diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/appsettings.json b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/appsettings.json index 45afff3..c4c00d8 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/appsettings.json +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/appsettings.json @@ -7,7 +7,7 @@ "HealthCheckUrl": "/health-status" }, "ConnectionStrings": { - "Default": "mongodb://localhost:27017/BookStore" + "Default": "mongodb://localhost:27017/BookStore_WebAssembly" }, "AuthServer": { "Authority": "https://localhost:44318", diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/package.json b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/package.json index 5caead1..066b3d8 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/package.json +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~4.2.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0" } } diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/yarn.lock b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/yarn.lock index ab84339..7bb1a77 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/yarn.lock +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.HttpApi.Host/yarn.lock @@ -2,202 +2,208 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.leptonxlite@~4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-4.2.1.tgz#3e3cc78b0d1d56113d459d61e01125bffada0c21" - integrity sha512-unZMV9HY13Kq00FZROVlo9po+foivENEoM7jUmZWlxOQjxBwa3/VJaxwQIXd9DZOqdpJpi5zUv/pSb6DqiZkfg== +"@abp/aspnetcore.mvc.ui.theme.leptonxlite@~5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-5.3.0.tgz#8d7834ddd21f35f4429688617767ae584dffb076" + integrity sha512-gB+Vczz5ZY7wOUjGWgJdcFbhbFRG4nOH/5HMpXWtBxuigapjoofubrgDqVVsOzVtremDRy/uUZomYlEdWiTpQg== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0" -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.1.tgz#35f6de6f106c80592ce70d36b6e8b20c64862803" - integrity sha512-kZz1tgUguGHxwG1MRkbkeXn9sIjbCOHJcBU+w+XuWwCqigM2yaE+KgnASDcjCrjQiPu6i73hf9OwtxXY1UbGMQ== +"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7" + integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA== dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.1" - "@abp/bootstrap" "~9.2.1" - "@abp/bootstrap-datepicker" "~9.2.1" - "@abp/bootstrap-daterangepicker" "~9.2.1" - "@abp/datatables.net-bs5" "~9.2.1" - "@abp/font-awesome" "~9.2.1" - "@abp/jquery-form" "~9.2.1" - "@abp/jquery-validation-unobtrusive" "~9.2.1" - "@abp/lodash" "~9.2.1" - "@abp/luxon" "~9.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.1" - "@abp/moment" "~9.2.1" - "@abp/select2" "~9.2.1" - "@abp/sweetalert2" "~9.2.1" - "@abp/timeago" "~9.2.1" - -"@abp/aspnetcore.mvc.ui@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.1.tgz#8b30f830d85f7e1f4a386b0ef8d0444e2550bc42" - integrity sha512-0C41JpevGynbyHGeKkqLUSVNK64QETsKVyVWY4fSZkChGHlD09Fn3qIlHJInpBqJ9qNYs5VQ7RRP02PSum9mAg== + "@abp/aspnetcore.mvc.ui" "~10.3.0" + "@abp/bootstrap" "~10.3.0" + "@abp/bootstrap-datepicker" "~10.3.0" + "@abp/bootstrap-daterangepicker" "~10.3.0" + "@abp/datatables.net-bs5" "~10.3.0" + "@abp/font-awesome" "~10.3.0" + "@abp/jquery-validation-unobtrusive" "~10.3.0" + "@abp/lodash" "~10.3.0" + "@abp/luxon" "~10.3.0" + "@abp/malihu-custom-scrollbar-plugin" "~10.3.0" + "@abp/moment" "~10.3.0" + "@abp/select2" "~10.3.0" + "@abp/sweetalert2" "~10.3.0" + "@abp/timeago" "~10.3.0" + +"@abp/aspnetcore.mvc.ui@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc" + integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.1.tgz#373c8715d175ca23a8871bacdb5f017b070254aa" - integrity sha512-uaCpz5EDSZYDacjnYoqTiktTDFGnGJPEHYh5eG4BORlQta53Hvak7m2CkRVjdOaXtuPLi6EbWPSh2bHIfhKRyQ== +"@abp/bootstrap-datepicker@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933" + integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ== dependencies: - bootstrap-datepicker "^1.10.0" + bootstrap-datepicker "^1.10.1" -"@abp/bootstrap-daterangepicker@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.1.tgz#b49e17a4753b09d49bfad6774a7f185e7e5bf71c" - integrity sha512-kd6LEACfx7CBIQOAiE/RHFp/WnthE2iz/eivl3fwuz1VgAO0CBIQ7hYoX91GaAIQgt+OAcgGbOl2G6E284EM9Q== +"@abp/bootstrap-daterangepicker@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f" + integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA== dependencies: + "@abp/moment" "~10.3.0" bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.1.tgz#ddf624e95f1dab4a8fce8d20b6dccd2b3d3f1679" - integrity sha512-NghAVP7M/Y2y9GYDu7IWo8oW7EyJEO+1NnPqCudpjWX4C6B27d7ghJ7I0MfrHoRq9/hBJZ07AKf3KMAZQD99ng== +"@abp/bootstrap@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6" + integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg== dependencies: - "@abp/core" "~9.2.1" - bootstrap "^5.3.3" - -"@abp/core@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.1.tgz#f7c635f1fe88fc3fbbc4accaa6aee2dc3b5631a7" - integrity sha512-onCzS2w+U+wBv5FRDCVE176AiyZDMm1D5GaqiEnpuAwsBncFpFyZedC95dtPmykagJbpOvHVSPOLyZ2jzGjcYg== - dependencies: - "@abp/utils" "~9.2.1" - -"@abp/datatables.net-bs5@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.1.tgz#ff69059e96d5341166fa8d08390e9bb352010e5d" - integrity sha512-NEkf8xWTIYFDs9lAAPs0hOL2UD+pnVwyix/9IAtip3BIkyPFpLCniNWbu1WhuNJpfmLHrWPSqIrouR80gGL7PQ== + "@abp/core" "~10.3.0" + "@abp/popper.js" "~10.3.0" + bootstrap "^5.3.8" + +"@abp/core@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c" + integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA== dependencies: - "@abp/datatables.net" "~9.2.1" - datatables.net-bs5 "^2.1.8" + "@abp/utils" "~10.3.0" -"@abp/datatables.net@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.1.tgz#0a5ab74ca44cd785efb487f0447e8acdea9d7aa1" - integrity sha512-A9TSPRNUV0eeCPnpGV9Htu9ZylUf3e03smYcbEROQHe+htwhcEV5dz8SLAI90baPi2g7VnyPav/3efaqo+ETdg== +"@abp/datatables.net-bs5@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc" + integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ== dependencies: - "@abp/jquery" "~9.2.1" - datatables.net "^2.1.8" + "@abp/datatables.net" "~10.3.0" + datatables.net-bs5 "^2.3.4" -"@abp/font-awesome@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.1.tgz#a387f1cf457bdb6e3cd30bd9f4c455a41f8ca0b1" - integrity sha512-RVo3422BItdAAmafSCH/mT1Ux8q6yUz7nswGep4beP1k1VfmFExj1mgVphIpAlH3DWyzfnwUOq7lLWf/Ul2dOA== +"@abp/datatables.net@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074" + integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw== dependencies: - "@abp/core" "~9.2.1" - "@fortawesome/fontawesome-free" "^6.6.0" + "@abp/jquery" "~10.3.0" + datatables.net "^2.3.4" -"@abp/jquery-form@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.1.tgz#727b391c36e8ff46b62cb01be14715a05fe74b4f" - integrity sha512-n6EpUNNRzilOzP5rYTWr9K2mPQbvBQAuxPiwUZpfwf+QpJrs+NppJMaC06HFbHcSkDDy/utd+P1/sqWaJjL/tw== +"@abp/font-awesome@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27" + integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A== dependencies: - "@abp/jquery" "~9.2.1" - jquery-form "^4.3.0" + "@abp/core" "~10.3.0" + "@fortawesome/fontawesome-free" "^7.0.1" -"@abp/jquery-validation-unobtrusive@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.1.tgz#98215811818e618d96a1dcac6419962fd39c6fef" - integrity sha512-7no3KxRW3agw4EAM5iTvQjE4+m9JrjuMAV20gAU0uVPB2+sHlluEAks0IU9wz76T+Ac7osferUZz33LgdDvIaw== +"@abp/jquery-validation-unobtrusive@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005" + integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA== dependencies: - "@abp/jquery-validation" "~9.2.1" + "@abp/jquery-validation" "~10.3.0" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.1.tgz#559c581523e4e098f2bf67627dfe6c7ef0e1c3c1" - integrity sha512-AEGm3agbwr1f5kmXvpBeiDmsS22P88zVr8NJDICGsgBxZofKndXsDFciNZGu6lXF5qXp8AwGRi//QPaCeQsP8g== +"@abp/jquery-validation@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf" + integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g== dependencies: - "@abp/jquery" "~9.2.1" + "@abp/jquery" "~10.3.0" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.1.tgz#bbcc9eab9cef528a8163f5062665ffcf2b87c2f0" - integrity sha512-gdDIKMNEpeUdzUu5C/g6j568ytJ7ifaDxBr1NYf2kJ34p7y6rrBmyY+sL+xR3ZlcGgyPGXyFhTLRD7qTjXlkPg== +"@abp/jquery@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d" + integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg== dependencies: - "@abp/core" "~9.2.1" + "@abp/core" "~10.3.0" jquery "~3.7.1" -"@abp/lodash@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.1.tgz#a80ab7a908a0332b721277b1193209187fab57d8" - integrity sha512-I2+XYqwMi3+FXCv4xp5hBoJmOszg2WR1gnGc+Qd0zwb2VAbG4MvKVFgM/GUAFD8EKlquGyPf3f+4l5FkaPFkrQ== +"@abp/lodash@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198" + integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ== dependencies: - "@abp/core" "~9.2.1" + "@abp/core" "~10.3.0" lodash "^4.17.21" -"@abp/luxon@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.1.tgz#7e3d197425813cfc6932cd3f9f09f97ecd2f4fc7" - integrity sha512-2tyOZRmq9jQN0Uhg8WaHfEzL0Xeew04sbA8O9bqw28psRbXaWXEVdElRMBNt50sZkFPhHFoxxFN7PR8obs0Qug== +"@abp/luxon@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9" + integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw== dependencies: - "@abp/core" "~9.2.1" - luxon "^3.5.0" + "@abp/core" "~10.3.0" + luxon "^3.7.2" -"@abp/malihu-custom-scrollbar-plugin@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.1.tgz#b0fa249885d442ba84657c7705df73851cb56db1" - integrity sha512-fzgQZsbN0xLMxEWh7znKAI4j0CPb8ciT/3x+QguGZDJf7OFw0YnEWctfEYJnnGG28HpHs1mh64gjqoeceHy0HQ== +"@abp/malihu-custom-scrollbar-plugin@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6" + integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA== dependencies: - "@abp/core" "~9.2.1" + "@abp/core" "~10.3.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.1.tgz#9982c65d63171962091b08fc4e0d1ea98cc1f0eb" - integrity sha512-V4KH1WmahP0BoaQGLEY4a0AQyfk1cLeNMk3qCPtuqIUbOFwimJY3oQgpelilEwjI3oD/upMzGphjLGrfQLRM2A== +"@abp/moment@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975" + integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ== dependencies: moment "^2.30.1" -"@abp/select2@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.1.tgz#5c3c6a4b0018b533491d6a46540069782559c57a" - integrity sha512-p743cnoohNLKX11ptnBcN5z9+ZyC11M9mwRR6SWbW5f1Eqvbkq03bf2mDFUfukCNis4RefeURZunPlsBOmRn/A== +"@abp/popper.js@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9" + integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g== + dependencies: + "@abp/core" "~10.3.0" + "@popperjs/core" "^2.11.8" + +"@abp/select2@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333" + integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA== dependencies: - "@abp/core" "~9.2.1" + "@abp/core" "~10.3.0" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.1.tgz#3db7e33855614460d2fdc5e3f8b65530902fcd9a" - integrity sha512-fJYLVxc5pAJoSLIcQYf5xRkPVnVQi/5+xwTgOePy3QeygOrAMpGS7vy+MIq7Mn+tBoEFlQ/Jn+NoB04AIYYPFw== +"@abp/sweetalert2@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a" + integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg== dependencies: - "@abp/core" "~9.2.1" - sweetalert2 "^11.14.1" + "@abp/core" "~10.3.0" + sweetalert2 "^11.23.0" -"@abp/timeago@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.1.tgz#6904e2d7bda57b436e3385c5fd1899b9cd806dd8" - integrity sha512-fmsPuBouWR/BvhXN53yJpg1Se06uIL7ox8XOgx1MHCe+1vxbXnFCtM2VujfowWtOSTJOzbL1DHcDpFE7JlkOag== +"@abp/timeago@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b" + integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg== dependencies: - "@abp/jquery" "~9.2.1" + "@abp/jquery" "~10.3.0" timeago "^1.6.7" -"@abp/utils@~9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.1.tgz#803fd48927ae332309f8a7005806c6aa6e499750" - integrity sha512-+j0SNB/K2j2xTTijy/qCL3ds2c/7OW4nrJ8Ccq17WtEqP+jk2TtJi0EnLqhNTDih0A++XV+pcftUC+cQ0h1cUw== +"@abp/utils@~10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124" + integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA== dependencies: just-compare "^2.3.0" -"@fortawesome/fontawesome-free@^6.6.0": - version "6.7.2" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz#8249de9b7e22fcb3ceb5e66090c30a1d5492b81a" - integrity sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA== +"@fortawesome/fontawesome-free@^7.0.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz#188c1053ce422ad1f934d7df242a973fcb89636d" + integrity sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg== + +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -bootstrap-datepicker@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz#61612bbe8bf0a69a5bce32bbcdda93ebb6ccf24a" - integrity sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg== +bootstrap-datepicker@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.10.1.tgz#0a8bec42957ea1ce1272b91bcf2b53696629fb86" + integrity sha512-GIe+fsLp9Hi30oW7L2v2Q9/a4+aojrIA2p4ZagtLuKw2lpfQgjJjM0L6vl/lYQydGXWUbpoKbEC/O5tzWIkEKQ== dependencies: jquery ">=3.4.0 <4.0.0" @@ -209,33 +215,26 @@ bootstrap-daterangepicker@^3.1.0: jquery ">=1.10" moment "^2.9.0" -bootstrap@^5.3.3: - version "5.3.7" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.7.tgz#8640065036124d961d885d80b5945745e1154d90" - integrity sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw== +bootstrap@^5.3.8: + version "5.3.8" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.8.tgz#6401a10057a22752d21f4e19055508980656aeed" + integrity sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg== -datatables.net-bs5@^2.1.8: - version "2.3.2" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.2.tgz#cffb8007a9f752a997bc70c0dbe9f545edfd18eb" - integrity sha512-1rh0ZTLoiziIQ4oAtgr+IOYVgJfAIceDnbDe535u8kv191pBAdTrKF6ovQO98Xy9mDXLdLNB7QCrLiV/sgPoQw== +datatables.net-bs5@^2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.8.tgz#7266636ff488429988ca664bc8cb0b7c5e48c563" + integrity sha512-TbFH99QSWm93Kn3teHLFKeyOqYbaiddlHvRFdXUwAvh/fjTMhACWmHG+I43ss8d23OEFHV0WIbN4lpPusZm5zw== dependencies: - datatables.net "2.3.2" + datatables.net "2.3.8" jquery ">=1.7" -datatables.net@2.3.2, datatables.net@^2.1.8: - version "2.3.2" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.2.tgz#6821f6288e6ad3cb6879c33e0e7e11d4091d330b" - integrity sha512-31TzwIQM0+pr2ZOEOEH6dsHd/WSAl5GDDGPezOHPI3mM2NK4lcDyOoG8xXeWmSbVfbi852LNK5C84fpp4Q+qxg== +datatables.net@2.3.8, datatables.net@^2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.8.tgz#55a8dbe3bd2196951c498ab79bf44602a2bf3229" + integrity sha512-uhViowhlDlheAuo5a8TrkQqADsjrtGeOyvrigvr4t0+K3MyAWqClORXWAYIcN9VLX6iIX0C8O9gwJNd01hITRg== dependencies: jquery ">=1.7" -jquery-form@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/jquery-form/-/jquery-form-4.3.0.tgz#7d3961c314a1f2d15298f4af1d3943f54f4149c6" - integrity sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ== - dependencies: - jquery ">=1.7.2" - jquery-mousewheel@>=3.0.6: version "3.2.2" resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.2.2.tgz#48c833f6260ee0c46d438a999e7d0060ec9eed0b" @@ -256,7 +255,7 @@ jquery-validation@>=1.19, jquery-validation@^1.21.0: resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.21.0.tgz#78fc05ab76020912a246af3661b3f54a438bca93" integrity sha512-xNot0rlUIgu7duMcQ5qb6MGkGL/Z1PQaRJQoZAURW9+a/2PGOUxY36o/WyNeP2T9R6jvWB8Z9lUVvvQWI/Zs5w== -jquery@>=1.10, jquery@>=1.2.6, "jquery@>=1.5.0 <4.0", jquery@>=1.7, jquery@>=1.7.2, "jquery@>=3.4.0 <4.0.0", jquery@^3.6.0, jquery@~3.7.1: +jquery@>=1.10, jquery@>=1.2.6, "jquery@>=1.5.0 <4.0", jquery@>=1.7, "jquery@>=3.4.0 <4.0.0", jquery@^3.6.0, jquery@~3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== @@ -271,10 +270,10 @@ lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -luxon@^3.5.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.6.1.tgz#d283ffc4c0076cb0db7885ec6da1c49ba97e47b0" - integrity sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ== +luxon@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.7.2.tgz#d697e48f478553cca187a0f8436aff468e3ba0ba" + integrity sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew== malihu-custom-scrollbar-plugin@^3.1.5: version "3.1.5" @@ -293,10 +292,10 @@ select2@^4.0.13: resolved "https://registry.yarnpkg.com/select2/-/select2-4.0.13.tgz#0dbe377df3f96167c4c1626033e924372d8ef44d" integrity sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw== -sweetalert2@^11.14.1: - version "11.22.2" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.22.2.tgz#d4d82a2edd4e97024306fe37f1bc64fa576e9bc9" - integrity sha512-GFQGzw8ZXF23PO79WMAYXLl4zYmLiaKqYJwcp5eBF07wiI5BYPbZtKi2pcvVmfUQK+FqL1risJAMxugcPbGIyg== +sweetalert2@^11.23.0: + version "11.26.24" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.26.24.tgz#25e5ba2b3e6725cec71acddd31832cefe61c8263" + integrity sha512-SLgukW4wicewpW5VOukSXY5Z6DL/z7HCOK2ODSjmQPiSphCN8gJAmh9npoceXOtBRNoDN0xIz+zHYthtfiHmjg== timeago@^1.6.7: version "1.6.7" diff --git a/samples/WebAppBlazorWebAssembly/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs b/samples/WebAppBlazorWebAssembly/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs index 3ad09fd..01b67d6 100644 --- a/samples/WebAppBlazorWebAssembly/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs +++ b/samples/WebAppBlazorWebAssembly/src/BookStore.MongoDB/MongoDb/MongoDbBookStoreDbSchemaMigrator.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using BookStore.Data; @@ -26,6 +27,7 @@ public class MongoDbBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITra { var dbContexts = _serviceProvider.GetServices(); var connectionStringResolver = _serviceProvider.GetRequiredService(); + var configuration = _serviceProvider.GetRequiredService(); if (_serviceProvider.GetRequiredService().IsAvailable) { @@ -34,9 +36,22 @@ public class MongoDbBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITra foreach (var dbContext in dbContexts) { - var connectionString = - await connectionStringResolver.ResolveAsync( - ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); + var connectionStringName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); + var connectionString = await connectionStringResolver.ResolveAsync(connectionStringName); + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = await connectionStringResolver.ResolveAsync(); + } + if (connectionString.IsNullOrWhiteSpace()) + { + connectionString = configuration.GetConnectionString("Default"); + } + if (connectionString.IsNullOrWhiteSpace()) + { + throw new InvalidOperationException( + $"Could not find a MongoDB connection string for '{connectionStringName}' or 'Default'."); + } + var mongoUrl = new MongoUrl(connectionString); var databaseName = mongoUrl.DatabaseName; var client = new MongoClient(mongoUrl); diff --git a/src/Lsw.Abp.AntDesignUI/AbpCrudPageBase.cs b/src/Lsw.Abp.AntDesignUI/AbpCrudPageBase.cs index d2ddaf1..2f555ac 100644 --- a/src/Lsw.Abp.AntDesignUI/AbpCrudPageBase.cs +++ b/src/Lsw.Abp.AntDesignUI/AbpCrudPageBase.cs @@ -306,7 +306,7 @@ public abstract class AbpCrudPageBase< protected virtual async Task OnDataGridReadAsync(QueryModel e) { CurrentSorting = e.SortModel - .Select(c => c.FieldName + (c.Sort == "descend" ? " DESC" : "")) + .Select(c => c.FieldName + (c.SortDirection == SortDirection.Descending ? " DESC" : "")) .JoinAsString(","); CurrentPage = e.PageIndex;