Browse Source

Merge branch 'dev' into rn-docs-update

pull/25350/head
Fahri Gedik 1 week ago
committed by GitHub
parent
commit
264b6961df
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 24
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
  2. 4
      common.props
  3. BIN
      docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/abp-react-app-screenshot.png
  4. BIN
      docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/abp-react-ui-modern-template-demo.gif
  5. BIN
      docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/abp-studio-project-creation-react.png
  6. BIN
      docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/cover.png
  7. BIN
      docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/react-ui-and-admin-console.png
  8. 116
      docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/post.md
  9. 4
      docs/en/cli/differences-between-old-and-new-cli.md
  10. 983
      docs/en/cli/index.md
  11. 62
      docs/en/docs-nav.json
  12. 3
      docs/en/framework/ui/index.md
  13. 46
      docs/en/framework/ui/mvc-razor-pages/overall.md
  14. 68
      docs/en/framework/ui/react-native/index.md
  15. 191
      docs/en/framework/ui/react/admin-console.md
  16. 183
      docs/en/framework/ui/react/authorization.md
  17. 184
      docs/en/framework/ui/react/components/index.md
  18. 208
      docs/en/framework/ui/react/customization.md
  19. 121
      docs/en/framework/ui/react/environment-variables.md
  20. 213
      docs/en/framework/ui/react/http-requests.md
  21. 142
      docs/en/framework/ui/react/index.md
  22. 158
      docs/en/framework/ui/react/localization.md
  23. 171
      docs/en/framework/ui/react/permission-management.md
  24. 150
      docs/en/framework/ui/react/unit-testing.md
  25. 12
      docs/en/modules/openiddict.md
  26. 26
      docs/en/release-info/migration-guides/abp-10-0.md
  27. 14
      docs/en/release-info/migration-guides/abp-10-1.md
  28. 63
      docs/en/studio/release-notes.md
  29. 4
      docs/en/studio/version-mapping.md
  30. 12
      docs/en/tutorials/modular-crm/part-08.md
  31. 37
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperOutputExtensions.cs
  32. 17
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  33. 25
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
  34. 20
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RequirePermissionsSimpleBatchStateChecker.cs
  35. 6
      framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs
  36. 6
      framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs
  37. 17
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs
  38. 6
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs
  39. 8
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/ISupportsCronScheduling.cs
  40. 8
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/ISupportsRuntimeRegistration.cs
  41. 2
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs
  42. 20
      framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker.cs
  43. 14
      framework/src/Volo.Abp.MudBlazorUI/AbpMudCrudPageBase.cs
  44. 2
      framework/src/Volo.Abp.MudBlazorUI/Components/AbpMudExtensibleDataGrid.razor.cs
  45. 2
      framework/src/Volo.Abp.MudBlazorUI/Components/MudEntityAction.razor.cs
  46. 2
      framework/src/Volo.Abp.MudBlazorUI/Components/ObjectExtending/MudLookupExtensionProperty.razor.cs
  47. 194
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Bootstrap/TagHelpers/Form/AbpInputTagHelperService_Tests.cs
  48. 246
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Bootstrap/TagHelpers/Form/AbpSelectTagHelperService_Tests.cs
  49. 1
      framework/test/Volo.Abp.Authorization.Tests/Volo.Abp.Authorization.Tests.csproj
  50. 2
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs
  51. 3
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/Authorization_Tests.cs
  52. 26
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/RequirePermissionsSimpleBatchStateChecker_Tests.cs
  53. 38
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/StaticPermissionDefinitionStore_Tests.cs
  54. 15
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/FeatureGatedTestPermissionDefinitionProvider.cs
  55. 51
      framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManager_Tests.cs
  56. 37
      framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker_Registration_Tests.cs
  57. 26
      framework/test/Volo.Abp.Features.Tests/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker_Tests.cs
  58. 6
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
  59. 266
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
  60. 4
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
  61. 270
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
  62. 4
      modules/blogging/app/Volo.BloggingTestApp/package.json
  63. 308
      modules/blogging/app/Volo.BloggingTestApp/yarn.lock
  64. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
  65. 242
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
  66. 11
      modules/cms-kit/.abpstudio/state.json
  67. 10
      modules/cms-kit/angular/package.json
  68. 4
      modules/cms-kit/angular/projects/cms-kit/package.json
  69. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
  70. 242
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
  71. 2
      modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
  72. 242
      modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
  73. 4
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
  74. 394
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
  75. 16
      modules/docs/.abpstudio/state.json
  76. 4
      modules/docs/app/VoloDocs.Web/package.json
  77. 298
      modules/docs/app/VoloDocs.Web/yarn.lock
  78. 4
      modules/identity/.abpstudio/state.json
  79. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs
  80. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
  81. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json
  82. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
  83. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json
  84. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json
  85. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json
  86. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json
  87. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json
  88. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json
  89. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json
  90. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json
  91. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json
  92. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json
  93. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json
  94. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
  95. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
  96. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json
  97. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json
  98. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json
  99. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json
  100. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json

24
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json

@ -348,15 +348,39 @@
"CompanySize": "Company size",
"DetailTrialLicense": "Details",
"Requested": "Requested",
"Pending": "Pending",
"Running": "Running",
"Activated": "Activated",
"PurchasedToNormalLicense": "Purchased",
"Expired": "Expired",
"TrialLicenseDeletionWarningMessage": "Are you sure you want to delete the trial license? Trial license, organization, support accounts will be deleted!",
"LicenseCategoryFilter": "License category",
"Permission:SendWelcomeEmail": "Send Welcome Email",
"Permission:ProvisionExistingOrganizationsAi": "Provision Existing Organizations AI",
"SendWelcomeEmail": "Send Welcome Email",
"SendWelcomeEmailWarningMessage": "Are you sure you want to send welcome email to the organization members?",
"SendWelcomeEmailSuccessMessage": "Welcome email sent successfully!",
"ProvisionExistingOrganizationsAi": "Provision Existing Organizations AI",
"ProvisionExistingOrganizationsAiConfirmation": "This will enable AI assisted development for all active organizations, grant included AI credits, and provision provider keys in the background. Do you want to continue?",
"DeleteExistingOrganizationsAiCredentials": "Delete Existing Organizations AI Keys",
"DeleteExistingOrganizationsAiCredentialsConfirmation": "This will revoke existing OpenRouter keys referenced by organizations and remove stored AI credentials from the database so provisioning can be retried. Do you want to continue?",
"ExistingOrganizationsAiOperationAlreadyRunning": "Another existing organizations AI operation is already running.",
"ExistingOrganizationsAiBackfillAlreadyRunning": "An existing organizations AI provisioning job is already running.",
"ExistingOrganizationsAiBackfillMissingManagementApiKey": "OpenRouter management API key is not configured for the admin application. Configure AiAssistedDevelopment:Providers:OpenRouter:ManagementApiKey before starting this operation.",
"NoActiveOrganizationsFoundForAiBackfill": "No active organizations were found for AI provisioning.",
"NoOrganizationsFoundForAiCredentialCleanup": "No organizations with AI credentials were found for cleanup.",
"ExistingOrganizationsAiBackfillNotFound": "The existing organizations AI provisioning operation was not found.",
"ExistingOrganizationsAiBackfillCompleted": "Existing organizations AI provisioning completed successfully.",
"ExistingOrganizationsAiBackfillFailed": "Existing organizations AI provisioning failed.",
"ExistingOrganizationsAiCredentialCleanupCompleted": "Existing organizations AI credential cleanup completed successfully.",
"ExistingOrganizationsAiCredentialCleanupFailed": "Existing organizations AI credential cleanup failed.",
"CurrentOrganization": "Current organization",
"Processed": "Processed",
"Succeeded": "Succeeded",
"Failed": "Failed",
"Cancelled": "Cancelled",
"CompletedAt": "Completed at",
"LastError": "Last error",
"Activate": "Activate",
"ActivateTrialLicenseWarningMessage": " When you activate a trial license, a welcome e-mail will be sent to the user. Do you want to activate it?",
"ActivateTrialLicenseSuccessMessage": "Activated successfully and the welcome e-mail sent to the organization members.",

4
common.props

@ -1,8 +1,8 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>10.4.0-rc.1</Version>
<LeptonXVersion>5.4.0-rc.1</LeptonXVersion>
<Version>10.5.0-preview</Version>
<LeptonXVersion>5.5.0-preview</LeptonXVersion>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
<PackageIconUrl>https://abp.io/assets/abp_nupkg.png</PackageIconUrl>
<PackageProjectUrl>https://abp.io/</PackageProjectUrl>

BIN
docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/abp-react-app-screenshot.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/abp-react-ui-modern-template-demo.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/abp-studio-project-creation-react.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/cover.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/images/react-ui-and-admin-console.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

116
docs/en/Community-Articles/2026-03-12-official-react-ui-for-abp-framework/post.md

@ -0,0 +1,116 @@
# React UI for ABP Framework Is Finally Here
If you have followed ABP for a while, you probably know that React support has been one of the most requested topics in the community.
With **ABP 10.4.0-rc.1**, that wait ends. React in ABP is no longer just something people ask about, hope for, or imagine as the next step. You can now create it, run it, and explore it today as a beta/preview experience in the modern template system.
As part of the ABP Framework team, and as one of the developers working on this React effort, I am genuinely happy to finally share it. This RC gives the community an early chance to try it, share feedback, and help us polish the final details before **ABP 10.4 stable**, where we plan to make the React UI generally available.
![abp-studio-project-creation-react](images/abp-studio-project-creation-react.png)
## Why this matters
ABP Framework has always been about helping teams build modern, maintainable, production-ready applications faster. With the new React UI, we are extending that same vision to teams who want ABP on the backend and React on the frontend without losing the built-in application features that make ABP productive from day one.
This is not another empty starter. The goal is a **first-class UI option** that fits into the ABP application startup experience and works naturally with familiar ABP concepts such as authentication, authorization, localization, multi-tenancy, modularity, runtime configuration, and deployment.
There is one important detail: the React UI belongs to ABP's **modern template system**. You create it with the `--modern` flag in the ABP CLI or by selecting the modern template flow in ABP Studio. You can find the technical documentation here: [React UI documentation](https://abp.io/docs/10.4/framework/ui/react).
## A quick look at the architecture
The final shape is clearer now: a modern React solution gives you a real React application in the solution, plus the ABP administration experience.
First, there is **your React application**. In the modern templates, this lives directly in the solution as a real app under `react/` or `apps/react/`. It contains the frontend code you work with every day, including pages, components, routing, API integration, runtime configuration, and authentication setup.
Second, there is the **ABP Admin Console**. The Admin Console is a pre-built React application that provides the standard ABP module management pages. It is delivered through the `Volo.Abp.AdminConsole` NuGet package, so it can evolve with ABP package updates while your own React application stays focused on your product's business features.
For layered and single-layer modern applications, the Admin Console is hosted by the backend and served under `/admin-console/*`. For microservice solutions, it runs as a separate React app under `apps/react-admin-console/`, with its own runtime configuration and the same `/admin-console/` base path. In both cases, the main React app can link users into the Admin Console when they need full administrative screens.
This split is a practical design choice. Your business UI stays yours, while administration capabilities remain available, consistent, and upgradeable.
![react-ui-and-admin-console](images/react-ui-and-admin-console.png)
## A different frontend philosophy
One of the most important things to understand is that this React UI is **not** being shaped with exactly the same architecture as some previous UI options.
We are not trying to ship the whole frontend experience as a closed set of page implementations coming from npm packages. Instead, the generated solution includes the actual page code inside the app itself. You can open it, understand it, refactor it, redesign it, and adapt it without fighting against a packaged black box.
The Admin Console covers ABP's standard module administration pages. Your own React application remains intentionally open and direct. That gives teams a good balance: built-in administrative power from ABP, and full ownership of the product-facing frontend.
## Built for AI-driven development
The new React UI is also shaped for the era of **AI-assisted development**.
React, TypeScript, Vite, TanStack Router, TanStack Query, Axios, Zod, React Hook Form, and shadcn/ui are technologies that modern coding assistants understand very well. Just as importantly, the generated application contains real frontend code in the solution. That gives AI tools and coding agents concrete project context to read, extend, and refactor.
This direction also fits the broader ABP AI story. ABP Studio already includes an AI assistant experience, and the new **ABP AI Agent** is being introduced to bring code generation, project understanding, issue fixing, and natural-language application evolution directly into the ABP workflow. You can follow that work here: [The Future of ABP Studio: AI Agent + Code Generation](https://abp.io/community/events/community-talks/the-future-of-abp-studio-ai-agent-code-generation-live-fekeoyjr). For the wider toolset, see the [ABP AI Toolkit](https://abp.io/ai/toolkit).
## What the React experience looks like
The current template already points to the kind of experience React developers expect from a modern application:
- A Vite-powered React + TypeScript frontend
- TanStack Router for client-side routing
- TanStack Query for server state and data fetching
- OIDC authentication against the ABP Auth Server
- Axios-based HTTP client integration
- Runtime configuration through `dynamic-env.json`
- Localization and permission-aware behavior integrated with ABP application configuration
- Tailwind CSS and shadcn/ui components that live in your project and can be customized directly
- Zod and React Hook Form for form handling and validation
- Vitest for frontend tests
- A dedicated Admin Console for ABP module administration
Even in its current form, the React UI already feels like a real ABP solution experience, not just a login page plus a few demo screens.
![abp-react-app-screenshot.png](images/abp-react-app-screenshot.png)
## More than a hello world
The generated React app is intentionally small enough to understand, but it is not empty.
Out of the box, you already get the kind of foundation most teams expect: login, registration, forgot-password and reset-password flows, runtime configuration, localization, permission-aware routing, API proxy generation, and a simple users page that can deep-link into the Admin Console when full user management is needed.
Depending on the selected options, it can also include a sample Books CRUD page that demonstrates how to build a full create/read/update/delete flow against an ABP backend.
The Admin Console provides the standard management experience for ABP modules, including identity management, roles, organization units, settings, audit logs, OpenIddict administration, language management, text templates, GDPR, SaaS and tenant management, and other module pages depending on your solution configuration.
That is the core value: developers get a clean React application to build their product, while ABP continues to provide the administrative capabilities expected from a production-ready application platform.
## Try it with ABP 10.4 RC
During the RC period, you can create a modern React solution with ABP 10.4.0-rc.1:
```bash
abp new Acme.BookStore --template app --modern
```
The React UI is the default UI option when `--modern` is used, but you can also pass it explicitly:
```bash
abp new Acme.BookStore --template app --modern --ui-framework react
```
For a single-layer application:
```bash
abp new Acme.BookStore --template app-nolayers --modern
```
For a microservice solution:
```bash
abp new Acme.BookStore --template microservice --modern
```
Once ABP 10.4 stable is released, the same modern React experience is planned to become generally available without needing to target the RC version explicitly.
![ABP Framework React UI Modern Template Demo](images/abp-react-ui-modern-template-demo.gif)
## What's next
The React UI is now real in ABP 10.4 RC, and the final polishing work continues toward the stable release. If you have been waiting for a real React path in ABP, this is the point where it stops being a wish and starts becoming something you can actually build with.
For me, one of the nicest parts of this RC is that we can finally stop talking about React support in ABP as a future idea and start improving something real together.
Try it, explore it, and share feedback with us while we keep polishing it for **ABP 10.4 stable**.

4
docs/en/cli/differences-between-old-and-new-cli.md

@ -7,9 +7,9 @@
# Old ABP CLI vs New ABP CLI
ABP CLI (Command Line Interface) is a command line tool to perform some common operations for ABP based solutions or ABP Studio features. With **v8.2+**, the old/legacy ABP CLI has been replaced with a new [CLI](index.md) system to align with the new templating system and [ABP Studio](../studio/index.md). Also, some superior features/commands have been introduced with the new CLI, such as `kube-connect` and `kube-intercept` commands.
ABP CLI (Command Line Interface) is a command line tool to perform some common operations for ABP based solutions or ABP Studio features. With **v8.2+**, the old/classic ABP CLI has been replaced with a new [CLI](index.md) system to align with the new templating system and [ABP Studio](../studio/index.md). Also, some superior features/commands have been introduced with the new CLI, such as `kube-connect` and `kube-intercept` commands.
In this guide, you will learn the motivation behind this change, some questions that you may have, how to use the old/legacy CLI, its features, and more...
In this guide, you will learn the motivation behind this change, some questions that you may have, how to use the old/classic CLI, its features, and more...
## Reason For The Change

983
docs/en/cli/index.md

File diff suppressed because it is too large

62
docs/en/docs-nav.json

@ -1866,6 +1866,68 @@
}
]
},
{
"text": "React",
"items": [
{
"text": "Overview",
"path": "framework/ui/react/index.md",
"isIndex": true
},
{
"text": "Configuration and Development",
"items": [
{
"text": "Environment Variables",
"path": "framework/ui/react/environment-variables.md"
},
{
"text": "Unit Testing",
"path": "framework/ui/react/unit-testing.md"
}
]
},
{
"text": "Core Features",
"items": [
{
"text": "Authorization",
"path": "framework/ui/react/authorization.md"
},
{
"text": "Localization",
"path": "framework/ui/react/localization.md"
},
{
"text": "Permission Management",
"path": "framework/ui/react/permission-management.md"
},
{
"text": "HTTP Requests",
"path": "framework/ui/react/http-requests.md"
}
]
},
{
"text": "Customization and Components",
"items": [
{
"text": "Customization",
"path": "framework/ui/react/customization.md"
},
{
"text": "Components",
"path": "framework/ui/react/components/index.md",
"isIndex": true
}
]
},
{
"text": "Admin Console",
"path": "framework/ui/react/admin-console.md"
}
]
},
{
"text": "React Native",
"items": [

3
docs/en/framework/ui/index.md

@ -1,7 +1,7 @@
```json
//[doc-seo]
{
"Description": "Explore ABP's UI options, including MVC, Blazor, Angular, React Native, and MAUI, to build dynamic applications effortlessly."
"Description": "Explore ABP's UI options, including React, MVC, Blazor, Angular, React Native, and MAUI, to build dynamic applications effortlessly."
}
```
@ -9,6 +9,7 @@
ABP provides several options for building the user interface (UI) in your applications. Here are some of the officially supported UI options you can use with ABP:
* [React](./react/index.md) *(modern template system only)*
* [MVC / Razor Pages](./mvc-razor-pages/overall.md)
* [Blazor](./blazor/overall.md)
* [Angular](./angular/quick-start.md)

46
docs/en/framework/ui/mvc-razor-pages/overall.md

@ -17,8 +17,8 @@ ABP provides a convenient and comfortable way of creating web applications using
ASP.NET Core provides two models for UI development:
* **[MVC (Model-View-Controller)](https://docs.microsoft.com/en-us/aspnet/core/mvc/)** is the classic way that exists from the version 1.0. This model can be used to create UI pages/components and HTTP APIs.
* **[Razor Pages](https://docs.microsoft.com/en-us/aspnet/core/razor-pages/)** was introduced with the ASP.NET Core 2.0 as a new way to create web pages.
- **[MVC (Model-View-Controller)](https://docs.microsoft.com/en-us/aspnet/core/mvc/)** is the classic way that exists from the version 1.0. This model can be used to create UI pages/components and HTTP APIs.
- **[Razor Pages](https://docs.microsoft.com/en-us/aspnet/core/razor-pages/)** was introduced with the ASP.NET Core 2.0 as a new way to create web pages.
**ABP supports both** of the MVC and the Razor Pages models. However, it is suggested to create the **UI pages with Razor Pages** approach and use the **MVC model to build HTTP APIs**. So, all the pre-build modules, samples and the documentation is based on the Razor Pages for the UI development, while you can always apply the MVC pattern to create your own pages.
@ -32,18 +32,18 @@ The [application startup template](../../../solution-templates/application-modul
ABP provides a complete [Theming](theming.md) system with the following goals:
* Reusable [application modules](../../../modules) are developed **theme-independent**, so they can work with any UI theme.
* UI theme is **decided by the final application**.
* The theme is distributed via NuGet/NPM packages, so it is **easily upgradable**.
* The final application can **customize** the selected theme.
- Reusable [application modules](../../../modules) are developed **theme-independent**, so they can work with any UI theme.
- UI theme is **decided by the final application**.
- The theme is distributed via NuGet/NPM packages, so it is **easily upgradable**.
- The final application can **customize** the selected theme.
### Current Themes
Currently, three themes are **officially provided**:
* The [Basic Theme](Basic-Theme.md) is the minimalist theme with the plain Bootstrap style. It is **open source and free**.
* The [Lepton Theme](https://abp.io/themes) is a **commercial** theme developed by the core ABP team and is a part of the [ABP](https://abp.io/) license.
* The [LeptonX Theme](https://x.leptontheme.com/) is a theme that has both [commercial](../../../ui-themes/lepton-x/mvc.md) and [lite](../../../ui-themes/lepton-x-lite/asp-net-core.md) choices.
- The [Basic Theme](Basic-Theme.md) is the minimalist theme with the plain Bootstrap style. It is **open source and free**.
- The [Lepton Theme](https://abp.io/themes) is a **commercial** theme developed by the core ABP team and is a part of the [ABP](https://abp.io/) license.
- The [LeptonX Theme](https://x.leptontheme.com/) is a theme that has both [commercial](../../../ui-themes/lepton-x/mvc.md) and [lite](../../../ui-themes/lepton-x-lite/asp-net-core.md) choices.
There are also some community-driven themes for the ABP (you can search on the web).
@ -72,7 +72,7 @@ You can use these libraries directly in your applications, without needing to ma
The themes provide the standard layouts. So, you have responsive layouts with the standard features already implemented. The screenshot below has taken from the Application Layout of the [Basic Theme](basic-theme.md):
![basic-theme-application-layout](../../../images/basic-theme-account-layout.png)
basic-theme-application-layout
See the [Theming](theming.md) document for more layout options and other details.
@ -90,13 +90,13 @@ Dynamic JavaScript API Client Proxy system allows you to consume your server sid
**Example: Get a list of authors from the server**
````js
```js
acme.bookStore.authors.author.getList({
maxResultCount: 10
}).then(function(result){
console.log(result.items);
});
````
```
`acme.bookStore.authors.author.getList` is an auto-generated function that internally makes an AJAX call to the server.
@ -108,7 +108,7 @@ ABP makes it easier & type safe to write Bootstrap HTML.
**Example: Render a Bootstrap modal**
````html
```html
<abp-modal>
<abp-modal-header title="Modal title" />
<abp-modal-body>
@ -116,7 +116,7 @@ ABP makes it easier & type safe to write Bootstrap HTML.
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Save|AbpModalButtons.Close)"></abp-modal-footer>
</abp-modal>
````
```
See the [Tag Helpers](tag-helpers) document for more.
@ -126,9 +126,9 @@ ABP provides `abp-dynamic-form` and `abp-input` tag helpers to dramatically simp
**Example: Use `abp-dynamic-form` to create a complete form based on a model**
````html
```html
<abp-dynamic-form abp-model="Movie" submit-button="true" />
````
```
See the [Forms & Validation](forms-validation.md) document for details.
@ -136,14 +136,14 @@ See the [Forms & Validation](forms-validation.md) document for details.
ABP provides a flexible and modular Bundling & Minification system to create bundles and minify style/script files on runtime.
````html
```html
<abp-style-bundle>
<abp-style src="/libs/bootstrap/css/bootstrap.css" />
<abp-style src="/libs/font-awesome/css/font-awesome.css" />
<abp-style src="/libs/toastr/toastr.css" />
<abp-style src="/styles/my-global-style.css" />
</abp-style-bundle>
````
```
Also, Client Side Package Management system offers a modular and consistent way of managing 3rd-party library dependencies.
@ -157,11 +157,11 @@ See the [Bundling & Minification](bundling-minification.md) and [Client Side Pac
ABP provides a lot of built-in solutions to common application requirements;
* [Widget System](widgets.md) can be used to create reusable widgets & create dashboards.
* [Page Alerts](page-alerts.md) makes it easy to show alerts to the user.
* [Modal Manager](modals.md) provides a simple way to build and use modals.
* [Data Tables](data-tables.md) integration makes straightforward to create data grids.
- [Widget System](widgets.md) can be used to create reusable widgets & create dashboards.
- [Page Alerts](page-alerts.md) makes it easy to show alerts to the user.
- [Modal Manager](modals.md) provides a simple way to build and use modals.
- [Data Tables](data-tables.md) integration makes straightforward to create data grids.
## Customization
There are a lot of ways to customize the theme and the UIs of the pre-built modules. You can override components, pages, static resources, bundles and more. See the [User Interface Customization Guide](customization-user-interface.md).
There are a lot of ways to customize the theme and the UIs of the pre-built modules. You can override components, pages, static resources, bundles and more. See the [User Interface Customization Guide](customization-user-interface.md).

68
docs/en/framework/ui/react-native/index.md

@ -5,12 +5,12 @@
}
```
````json
```json
//[doc-params]
{
"Architecture": ["Monolith", "Tiered", "Microservice"]
}
````
```
# Getting Started with React Native
@ -28,10 +28,9 @@ Please follow the steps below to prepare your development environment for React
2. **[Optional] Install Yarn:** You can install Yarn v1 (not v2) by following the instructions on [the installation page](https://classic.yarnpkg.com/en/docs/install). Yarn v1 provides a better developer experience compared to npm v6 and below. You can skip this step and use npm, which is built into Node.js.
3. **[Optional] Install VS Code:** [VS Code](https://code.visualstudio.com/) is a free, open-source IDE that works seamlessly with TypeScript. While you can use any IDE, including Visual Studio or Rider, VS Code typically provides the best developer experience for React Native projects.
4. **[Optional] Install an Emulator/Simulator:** If you want to test on Android emulators or iOS simulators (instead of using the Web View method), you'll need to install one of the following:
- **Android Studio & Emulator:** Install [Android Studio](https://developer.android.com/studio) and set up an Android Virtual Device (AVD) through the AVD Manager. You can follow the [Android Studio Emulator guide](https://docs.expo.dev/workflow/android-studio-emulator/) on expo.io documentation.
- **Xcode & iOS Simulator:** On macOS, install [Xcode](https://developer.apple.com/xcode/) from the App Store, which includes the iOS Simulator. You can follow the [iOS Simulator guide](https://docs.expo.dev/workflow/ios-simulator/) on expo.io documentation.
> **Note:** The Web View method (recommended for quick testing) doesn't require an emulator or simulator. If you prefer a CLI-based approach for Android, you can check the [setting up android emulator without android studio](setting-up-android-emulator.md) guide as an alternative.
- **Android Studio & Emulator:** Install [Android Studio](https://developer.android.com/studio) and set up an Android Virtual Device (AVD) through the AVD Manager. You can follow the [Android Studio Emulator guide](https://docs.expo.dev/workflow/android-studio-emulator/) on expo.io documentation.
- **Xcode & iOS Simulator:** On macOS, install [Xcode](https://developer.apple.com/xcode/) from the App Store, which includes the iOS Simulator. You can follow the [iOS Simulator guide](https://docs.expo.dev/workflow/ios-simulator/) on expo.io documentation.
> **Note:** The Web View method (recommended for quick testing) doesn't require an emulator or simulator. If you prefer a CLI-based approach for Android, you can check the [setting up android emulator without android studio](setting-up-android-emulator.md) guide as an alternative.
## How to Start a New React Native Project
@ -41,7 +40,7 @@ You have multiple options to initiate a new React Native project that works with
ABP Studio is the most convenient and flexible way to create a React Native application based on the ABP framework. Follow the [tool documentation](../../../studio) and select the option below:
![React Native option](../../../images/react-native-option.png)
React Native option
### 2. Using ABP CLI
@ -61,7 +60,6 @@ This command creates a solution containing an **Angular** or **MVC** project (de
Before running the React Native application, install the dependencies by running `yarn install` or `npm install` in the `react-native` directory.
### Web View (Recommended - Quickest Method)
The quickest way to test the application is by using the web view. While testing on a physical device is also supported, we recommend using [local HTTPS development](https://docs.expo.dev/guides/local-https-development/) as it requires fewer backend modifications.
@ -69,28 +67,21 @@ The quickest way to test the application is by using the web view. While testing
Follow these steps to set up the web view:
1. Navigate to the `react-native` directory and start the application by running:
```bash
```bash
yarn web
```
```
2. Generate SSL certificates by running the following command in a separate directory:
```bash
```bash
mkcert localhost
```
```
3. Set up the local proxy by running:
```bash
```bash
yarn create:local-proxy
```
```
The default port is `443`. To use a different port, specify the `SOURCE_PORT` environment variable:
```bash
SOURCE_PORT=8443 yarn create:local-proxy
```
4. If you changed the port in the previous step, update the `apiUrl` in `Environment.ts` accordingly.
5. Update the mobile application settings in the database and re-run the migrations. If you specified a custom port, ensure the port is updated in the configuration as well:
```json
```json
"OpenIddict": {
"Applications": {
"MyApplication_Mobile": {
@ -99,7 +90,7 @@ Follow these steps to set up the web view:
}
}
}
```
```
### Running on Emulator/Simulator
@ -111,17 +102,17 @@ If you prefer to test on an Android emulator or iOS simulator, you'll need to co
{{ if Architecture == "Monolith" }}
![react native monolith environment local IP](../../../images/react-native-monolith-environment-local-ip.png)
react native monolith environment local IP
{{ else if Architecture == "Tiered" }}
![react native tiered environment local IP](../../../images/react-native-tiered-environment-local-ip.png)
react native tiered environment local IP
> Make sure that `issuer` matches the running address of the `.AuthServer` project, `apiUrl` matches the running address of the `.HttpApi.Host` or `.Web` project.
{{ else }}
![react native microservice environment local IP](../../../images/react-native-environment-local-ip.png)
react native microservice environment local IP
> Make sure that `issuer` matches the running address of the `.AuthServer` project, `apiUrl` matches the running address of the `.AuthServer` project.
@ -131,7 +122,7 @@ If you prefer to test on an Android emulator or iOS simulator, you'll need to co
> The React Native application was generated with [Expo](https://expo.io/). Expo is a set of tools built around React Native to help you quickly start an app, and it includes many features.
![expo-cli-options](../../../images/rn-options.png)
expo-cli-options
In the image above, you can start the application on an Android emulator, an iOS simulator, or a physical phone by scanning the QR code with the [Expo Client](https://expo.io/tools#client) or by choosing the corresponding option.
@ -146,7 +137,7 @@ Press **i** to open the iOS simulator, or scan the QR code from the Expo CLI wit
<img width="360" src="../../../images/rn-login-iphone.png" alt="React Native login screen" />
Enter **admin** as the username and **1q2w3E\*** as the password to log in to the application.
Enter **admin** as the username and **1q2w3E** as the password to log in to the application.
The application is up and running. You can continue to develop your application based on this startup template.
@ -238,11 +229,10 @@ A React Native application running on an Android emulator or a physical phone **
{{ if Architecture == "Monolith" }}
![React Native monolith host project configuration](../../../images/react-native-monolith-be-config.png)
React Native monolith host project configuration
- Open the `appsettings.json` file in the `.DbMigrator` folder. Replace the `localhost` address in the `RootUrl` property with your local IP address. Then, run the database migrator.
- Open the `appsettings.Development.json` file in the `.HttpApi.Host` folder. Add this configuration to accept global requests for testing the React Native application in the development environment.
```json
{
"Kestrel": {
@ -257,11 +247,10 @@ A React Native application running on an Android emulator or a physical phone **
{{ else if Architecture == "Tiered" }}
![React Native tiered project configuration](../../../images/react-native-tiered-be-config.png)
React Native tiered project configuration
- Open the `appsettings.json` file in the `.DbMigrator` folder. Replace the `localhost` address in the `RootUrl` property with your local IP address. Then, run the database migrator.
- Open the `appsettings.Development.json` file in the `.AuthServer` folder. Add this configuration to accept global requests for testing the React Native application in the development environment.
```json
{
"Kestrel": {
@ -273,9 +262,7 @@ A React Native application running on an Android emulator or a physical phone **
}
}
```
- Open the `appsettings.Development.json` file in the `.HttpApi.Host` folder. Add this configuration to accept global requests. Additionally, you need to configure the authentication server as mentioned above.
```json
{
"Kestrel": {
@ -296,10 +283,9 @@ A React Native application running on an Android emulator or a physical phone **
{{ else if Architecture == "Microservice" }}
![React Native microservice project configuration](../../../images/react-native-microservice-be-config.png)
React Native microservice project configuration
- Open the `appsettings.Development.json` file in the `.AuthServer` folder. Add this configuration to accept global requests for testing the React Native application in the development environment.
```json
{
"App": {
@ -314,9 +300,7 @@ A React Native application running on an Android emulator or a physical phone **
}
}
```
- Open the `appsettings.Development.json` file in the `.AdministrationService` folder. Add this configuration to accept global requests for testing the React Native application in the development environment. You should also provide the authentication server configuration. Additionally, you need to apply the same process for all services you will use in the React Native application.
```json
{
"App": {
@ -337,9 +321,7 @@ A React Native application running on an Android emulator or a physical phone **
}
}
```
- Update the `appsettings.json` file in the `.IdentityService` folder. Replace the `localhost` configuration with your local IP address for the React Native application.
```json
{
//...
@ -358,9 +340,7 @@ A React Native application running on an Android emulator or a physical phone **
}
}
```
- Finally, update the mobile gateway configurations as follows:
```json
//gateways/mobile/MyMicroserviceProject.MobileGateway/Properties/launchSettings.json
{
@ -385,7 +365,6 @@ A React Native application running on an Android emulator or a physical phone **
}
}
```
```json
//gateways/mobile/MyMicroserviceProject.MobileGateway/appsettings.json
{
@ -433,7 +412,6 @@ A React Native application running on an Android emulator or a physical phone **
}
}
```
{{ end }}
Run the backend application(s) as described in the [getting started document](../../../get-started).
Run the backend application(s) as described in the [getting started document](../../../get-started).

191
docs/en/framework/ui/react/admin-console.md

@ -0,0 +1,191 @@
```json
//[doc-seo]
{
"Description": "Learn how the ABP Admin Console works with React UI applications and how it is hosted under /admin-console."
}
```
# Admin Console
The **ABP Admin Console** is the React-based administration UI for ABP applications. It provides management pages for ABP modules and is available in React UI solutions created with ABP Studio v3.0+ or `abp new --modern --ui-framework react`.
The Admin Console is delivered as the `Volo.Abp.AdminConsole` NuGet package for layered and single-layer solutions. In microservice solutions, the template also includes a standalone `apps/react-admin-console/` React app.
## What It Provides
The Admin Console contains administration pages for the ABP modules included in the host application. Module pages are activated based on the backend services available in the host, so a solution only shows pages for modules it actually has.
The built-in module areas include:
| Module | Notes |
| --- | --- |
| Identity Pro | User, role, claim, and organization unit management when Identity services are available. |
| Account Pro | Account management pages and account-related flows. |
| OpenIddict | Application and scope management when OpenIddict services are available. |
| Audit Logging UI | Optional. Visible when Audit Logging services are available. |
| AI Management | Optional. Visible when AI Management services are available. |
| Text Template Management | Optional. Visible when Text Template Management services are available. |
Other module pages, such as Setting Management, SaaS, GDPR, or customization pages, can also be available depending on the solution and installed modules.
## Hosting Model
The Admin Console is served under:
```text
/admin-console/*
```
API endpoints used by the Admin Console are served under:
```text
/admin-console/api/*
```
The `Volo.Abp.AdminConsole` package embeds the built React SPA under `wwwroot/admin-console/` and registers it with ABP's Virtual File System. `AdminConsoleSpaMiddleware` then serves static assets and falls back to `index.html` for client-side routes.
The middleware deliberately lets `/admin-console/api/*` requests pass through to MVC controllers.
## Layered and Single-Layer Templates
For layered and single-layer modern templates:
- The developer-owned React app is in the `react/` folder.
- The Admin Console UI is embedded in the backend through the `Volo.Abp.AdminConsole` NuGet package.
- There is no separate `react-admin-console/` source folder in the generated solution.
- The backend host serves Admin Console pages under `/admin-console/*`.
Example URL:
```text
https://localhost:44300/admin-console/
```
The main React app links to the Admin Console through `getAdminConsoleUrl()`.
## Microservice Template
For the microservice modern template:
- The main React app is in `apps/react/`.
- The Admin Console app is in `apps/react-admin-console/`.
- Both are served through the Web Gateway.
- The Admin Console has its own OpenIddict client, normally `<ProjectName>_AdminConsole`.
The main React app uses `adminConsoleUrl` from `dynamic-env.json` to open the Admin Console origin and `/admin-console` base path.
## Module Discovery
The Admin Console calls:
```text
GET /admin-console/api/modules
```
The backend checks for module application service contracts and returns which module areas are available. The discovery keys include:
| Key | Backend service check |
| --- | --- |
| `identity` | `Volo.Abp.Identity.IIdentityUserAppService` |
| `saas` | `Volo.Saas.Host.ITenantAppService` |
| `auditLogging` | `Volo.Abp.AuditLogging.IAuditLogsAppService` |
| `gdpr` | `Volo.Abp.Gdpr.IGdprRequestAppService` |
| `openIddict` | `Volo.Abp.OpenIddict.Applications.IApplicationAppService` |
| `textTemplateManagement` | `Volo.Abp.TextTemplateManagement.TextTemplates.ITemplateDefinitionAppService` |
| `aiManagement` | AI Management service contracts, with a legacy AI engine fallback. |
`settingManagement` is always returned as available by the discovery endpoint, while access to pages is still controlled by permissions.
## Configuration Endpoint
The Admin Console also uses:
```text
GET /admin-console/api/config
```
This endpoint provides Admin Console runtime settings such as authority, client ID, scopes, application name, customization options, and localization language configuration.
Host applications can configure Admin Console options from the `AdminConsole` configuration section or by configuring `AbpAdminConsoleOptions`.
## Configuring the Admin Console
In layered and single-layer modern React templates, the embedded Admin Console is configured from the backend host application's `appsettings.json` file. The generated template includes an `AdminConsole` section similar to the following:
```json
{
"AdminConsole": {
"IsEnabled": true,
"RedirectRootToAdminConsole": true,
"Authority": "https://localhost:44300",
"ClientId": "Acme_BookStore_AdminConsole",
"Scope": "openid profile email offline_access Acme_BookStore",
"LocalizationLanguages": [ "en", "tr" ],
"ThemeOverrideCssPath": "/theme-override.css",
"InitialTheme": "system",
"CustomizationPermissionName": "AdminConsole.Customization"
}
}
```
You can also configure the same values in the module class with `AbpAdminConsoleOptions`:
```csharp
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpAdminConsoleOptions>(options =>
{
options.IsEnabled = true;
options.RedirectRootToAdminConsole = true;
options.Authority = "https://localhost:44300";
options.ClientId = "Acme_BookStore_AdminConsole";
options.Scope = "openid profile email offline_access Acme_BookStore";
options.LocalizationLanguages = new[] { "en", "tr" };
options.ThemeOverrideCssPath = "/theme-override.css";
options.InitialTheme = "system";
options.CustomizationPermissionName = "AdminConsole.Customization";
});
}
```
The most commonly changed options are:
| Option | Description |
| --- | --- |
| `IsEnabled` | Enables or disables the embedded Admin Console SPA middleware. |
| `RedirectRootToAdminConsole` | Redirects the backend root path (`/`) to `/admin-console`. |
| `Authority` | OpenID Connect authority URL. If it is `null`, the host origin is used. |
| `ClientId` | OpenIddict client ID used by the Admin Console SPA. |
| `Scope` | Space-separated OAuth scopes requested by the Admin Console. |
| `LocalizationLanguages` | UI language codes exposed to the Admin Console. If empty, the frontend falls back to `en`. |
| `ThemeOverrideCssPath` | Optional CSS path or absolute URL injected into the Admin Console HTML. |
| `InitialTheme` | Initial theme behavior: `light`, `dark`, `system`, or `both`. |
| `CustomizationPermissionName` | Permission required to show and use the Admin Console customization page. If not set, customization is disabled. |
The `ApplicationName`, `LogoUrl`, `InitialTheme`, and `ThemeOverrideCssPath` values can also be changed from the Admin Console customization UI when `CustomizationPermissionName` is configured and the current user has that permission. Values saved from the customization UI are stored as settings and override the defaults from configuration.
In microservice solutions, the Admin Console is a separate React app under `apps/react-admin-console/`. It still uses its own OpenIddict client (`<ProjectName>_AdminConsole`) and runtime configuration, while the backend exposes the same `/admin-console/api/config` and `/admin-console/api/modules` endpoints.
## Permissions
Admin Console routes still require permissions. For example:
- Identity pages use `AbpIdentity.*` permissions.
- OpenIddict pages use `OpenIddictPro.Application` and `OpenIddictPro.Scope`.
- Audit Logging uses `AuditLogging.AuditLogs`.
- Text Template Management uses `TextTemplateManagement.*`.
- AI Management uses `AIManagement.*`.
The main React app's Admin Console menu item only requires authentication. The Admin Console performs detailed permission checks for its own pages.
## Customization
The developer-owned React app is intended for application-specific pages. The Admin Console is an ABP-managed administration surface and should normally be updated by updating ABP packages.
For layered and single-layer hosts, the package supports host-side options such as application name, localization languages, and theme override CSS path. For larger UI changes, prefer building your own pages in the main React app or extending the backend modules through supported ABP extension points.
## See Also
- [React UI](./index.md)
- [Environment Variables](./environment-variables.md)
- [Permission Management](./permission-management.md)

183
docs/en/framework/ui/react/authorization.md

@ -0,0 +1,183 @@
```json
//[doc-seo]
{
"Description": "Learn how authentication and authorization are configured in ABP React UI applications."
}
```
# Authorization in React UI
OAuth is preconfigured in ABP React UI templates. When you create a React solution with ABP Studio v3.0+ or `abp new --modern --ui-framework react`, the template includes OpenID Connect settings, an OpenIddict client, route guards, and authentication hooks.
The React app authenticates against the ABP Auth Server using the **Authorization Code flow with PKCE**, which is the recommended flow for browser-based applications.
## Packages
The template uses these packages for authentication:
| Package | Purpose |
| --- | --- |
| `@volo/abp-oidc-auth` | Framework-agnostic OIDC client helpers for ABP/OpenIddict backends. |
| `@volo/abp-react-oidc-auth` | React adapter for the ABP OIDC client. |
| `oidc-client-ts` | Underlying OIDC protocol implementation. |
The package list also includes `@volo/abp-app-config` and `@volo/abp-react-app-config`, which are used to fetch application configuration and permissions after authentication.
## OAuth Configuration
The OIDC settings are resolved from runtime configuration first and fall back to `src/env.ts`.
```ts
export function getOAuthConfig(): {
issuer: string
redirectUri: string
clientId: string
scope: string
responseType: 'code'
} {
return {
issuer: loadedConfig?.oAuthConfig?.issuer ?? env.oauth.issuer,
redirectUri: loadedConfig?.oAuthConfig?.redirectUri ?? env.oauth.redirectUri,
clientId: loadedConfig?.oAuthConfig?.clientId ?? env.oauth.clientId,
scope: loadedConfig?.oAuthConfig?.scope ?? env.oauth.scope,
responseType: 'code',
}
}
```
The important configuration values are:
- `oAuthConfig.issuer`: Auth Server / OpenIddict authority URL.
- `oAuthConfig.redirectUri`: URL where the Auth Server redirects after login.
- `oAuthConfig.clientId`: OpenIddict client ID, normally `<ProjectName>_App`.
- `oAuthConfig.scope`: Scopes requested by the React app.
See [Environment Variables](./environment-variables.md) for the full runtime configuration model.
## Initializing Authentication
The app loads runtime configuration before initializing OIDC:
```tsx
async function bootstrap() {
await loadRuntimeConfig()
initUserManager()
createRoot(document.getElementById('root')!).render(
<StrictMode>
<App />
</StrictMode>
)
}
```
`initUserManager()` creates the ABP React OIDC client:
```ts
client = createAbpReactOidcAuth({
authority: config.issuer,
clientId: config.clientId,
redirectUri: config.redirectUri,
postLogoutRedirectUri: config.redirectUri,
scope: config.scope,
responseType: config.responseType,
automaticSilentRenew: true,
userStoreType: 'localStorage',
userStorePrefix: `oidc.${config.clientId}`,
silentRedirectUri: `${window.location.origin}/silent-renew.html`,
})
```
The template stores the OIDC user in local storage and enables silent renewal with `public/silent-renew.html`.
## Auth Provider and Hook
`AuthProvider` wraps the app and handles the OIDC callback:
```tsx
export function AuthProvider({ children }: { children: ReactNode }) {
const authClient = getAuthClient()
useEffect(() => {
const params = new URLSearchParams(window.location.search)
if (!params.has('code') || !params.has('state')) return
void authClient.handleSigninCallback().then(() =>
window.history.replaceState({}, document.title, window.location.pathname)
)
}, [])
return <authClient.AuthProvider>{children}</authClient.AuthProvider>
}
```
Use `useAuth()` in components:
```tsx
import { useAuth } from '@/lib/auth/AuthContext'
export function LoginButton() {
const { isAuthenticated, isLoading, login, logout, user } = useAuth()
if (isLoading) return null
return isAuthenticated ? (
<button onClick={() => void logout()}>{user?.name ?? 'Logout'}</button>
) : (
<button onClick={() => void login()}>Login</button>
)
}
```
## Route Protection
The React template uses TanStack Router. Protected routes use `beforeLoad` guards.
```ts
const identityLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/identity',
component: IdentityLayout,
beforeLoad: authGuard,
})
```
`authGuard` checks the current OIDC user and redirects unauthenticated users to the Auth Server:
```ts
export async function authGuard({ location }: GuardContext) {
const user = await userManager.getUser()
if (!user || user.expired) {
await userManager.signinRedirect({
state: { returnUrl: location.href },
})
throw new Error('Redirecting to login')
}
}
```
Routes that also require a permission use `createPermissionGuard`:
```ts
const usersRoute = createRoute({
getParentRoute: () => identityLayoutRoute,
path: 'users',
component: UsersPage,
beforeLoad: createPermissionGuard('AbpIdentity.Users'),
})
```
Permission checks are explained in [Permission Management](./permission-management.md).
## OpenIddict Clients
The generated OpenIddict clients depend on the template:
- Layered and single-layer modern templates use the main React client, normally `<ProjectName>_App`.
- Microservice modern templates also include an Admin Console client, normally `<ProjectName>_AdminConsole`, because the Admin Console is a separate React app.
If you change URLs after generation, update both the runtime configuration and the corresponding OpenIddict client redirect URLs.
## See Also
- [Environment Variables](./environment-variables.md)
- [Permission Management](./permission-management.md)
- [Authorization](../../../framework/fundamentals/authorization/index.md)

184
docs/en/framework/ui/react/components/index.md

@ -0,0 +1,184 @@
```json
//[doc-seo]
{
"Description": "Learn about the component architecture and UI libraries used by ABP React UI applications."
}
```
# Components
ABP React UI templates use a source-owned component architecture. The generated app includes shadcn/ui-style primitives, layout components, feature components, route pages, and shared infrastructure under `src/lib/`.
The goal is to give you a working React application that you can customize without replacing framework-owned black boxes.
## Component Structure
The main React app is organized like this:
```text
src/
├── components/
│ ├── layout/
│ ├── ui/
│ └── identity/
├── lib/
│ ├── api/
│ ├── auth/
│ ├── i18n/
│ ├── routing/
│ └── theme/
├── locales/
├── pages/
└── routes/
```
The exact folders can vary by selected template options and modules.
## UI Stack
The React template uses:
| Library | Purpose |
| --- | --- |
| React | UI rendering. |
| Vite | Build tool and development server. |
| TanStack Router | Client-side routing. |
| TanStack Query | Server state, queries, mutations, and cache invalidation. |
| shadcn/ui-style components | Source-owned UI primitives built on Radix UI and Tailwind CSS. |
| Radix UI | Accessible low-level UI primitives. |
| Tailwind CSS | Utility-first styling and design tokens. |
| React Hook Form | Form state management. |
| Zod | Form and DTO validation schemas. |
| Axios | HTTP client. |
| i18next / react-i18next | Localization. |
| Zustand | Lightweight client state when needed. |
| Sonner | Toast notifications. |
| Lucide React | Icons. |
## `components/ui`
`src/components/ui/` contains reusable UI primitives. These components are copied into your project and can be edited directly.
Common components include:
- `Button`
- `Input`
- `Label`
- `Table`
- `Dialog`
- `DropdownMenu`
- `Select`
- `Card`
- `Tabs`
- `Badge`
- `DatePicker`
- `ConfirmDialog`
Use these primitives to build application pages and feature components.
```tsx
import { Button } from '@/components/ui/button'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
export function ReportCard() {
return (
<Card>
<CardHeader>
<CardTitle>Reports</CardTitle>
</CardHeader>
<CardContent>
<Button>Refresh</Button>
</CardContent>
</Card>
)
}
```
## Layout Components
Layout components are under `src/components/layout/`.
Important components include:
- `RootLayout`: root shell used by TanStack Router.
- `Header`: top bar, login button, theme toggle, and user menu.
- `Sidebar`: route-config-driven navigation menu.
- `UserMenu`: account-related dropdown menu.
The sidebar reads `src/lib/routing/route-config.ts`, checks authentication and permissions, and renders internal or external links.
## Feature Components
Feature-specific components should live near the feature that owns them. For example, Identity-specific layout components live under `src/components/identity/`, while Books-specific UI is implemented in `src/pages/books/BooksPage.tsx` in the sample template.
As a rule:
- Put generic, reusable primitives in `components/ui`.
- Put application layout in `components/layout`.
- Put feature-specific components under `components/<feature>` or next to the page when they are only used by one page.
## Pages
Route pages live under `src/pages/`. A page usually combines:
- UI primitives from `components/ui`.
- API functions from `src/lib/api`.
- Server state from TanStack Query.
- Form state from React Hook Form.
- Validation schemas from Zod.
- Permissions from `usePermissions()`.
- Localized strings from `useTranslation()`.
The Books page is the best full CRUD reference when the sample CRUD option is selected.
## Forms
Forms use React Hook Form and Zod:
```tsx
const productSchema = z.object({
name: z.string().min(1, 'Required'),
price: z.number().min(0),
})
type ProductFormData = z.infer<typeof productSchema>
const form = useForm<ProductFormData>({
resolver: zodResolver(productSchema),
defaultValues: {
name: '',
price: 0,
},
})
```
This keeps runtime validation and TypeScript types close to each other.
## Routing Components
Routes are configured in `src/routes/router.tsx` with TanStack Router. Use:
- `authGuard` for authenticated pages.
- `createPermissionGuard('Permission.Name')` for permission-protected pages.
- `RootLayout` and nested layouts for shared page structure.
Menu entries are configured separately in `src/lib/routing/route-config.ts`, so route registration and navigation display can evolve independently.
## API Components and Hooks
API functions live under `src/lib/api/` and use the shared `api` Axios instance. Components normally consume these functions through TanStack Query:
```tsx
const usersQuery = useQuery({
queryKey: ['app', 'users', queryParams],
queryFn: () => getAppUsers(queryParams),
})
```
This keeps HTTP details out of rendering components and gives you caching, loading states, refetching, and mutation invalidation.
## See Also
- [Customization](../customization.md)
- [HTTP Requests](../http-requests.md)
- [Unit Testing](../unit-testing.md)

208
docs/en/framework/ui/react/customization.md

@ -0,0 +1,208 @@
```json
//[doc-seo]
{
"Description": "Learn how to customize ABP React UI applications, including pages, themes, sidebar navigation, and the user menu."
}
```
# Customization
The React app generated by ABP is fully owned by your solution. All source code is available, so you can change pages, components, routes, themes, menus, API calls, and layout behavior just like in any other React application.
This page focuses on the main developer-owned React app. The same general approach applies to the public-web React app if your solution includes one. The Admin Console is an ABP-managed administration surface; see [Admin Console](./admin-console.md) for details.
## General Customization
Application pages live under `src/pages/`. The template includes practical references:
- **Users page**: a simple page that lists users and links to the Admin Console for full user and role management.
- **Books page**: a full CRUD sample when the sample CRUD option is selected during solution creation. It demonstrates TanStack Query, forms, Zod validation, dialogs, tables, permissions, and toast notifications.
Shared UI and infrastructure live under:
```text
src/
├── components/
│ ├── layout/
│ └── ui/
├── lib/
│ ├── api/
│ ├── auth/
│ ├── i18n/
│ ├── routing/
│ └── theme/
└── pages/
```
## Adding a Page
Create a page under `src/pages/`:
```tsx
export function ReportsPage() {
return (
<div className="space-y-6">
<h1 className="text-3xl font-bold tracking-tight">Reports</h1>
</div>
)
}
```
Register it with TanStack Router in `src/routes/router.tsx`:
```tsx
const reportsRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/reports',
component: ReportsPage,
beforeLoad: createPermissionGuard('MyProjectName.Reports'),
})
const routeTree = rootRoute.addChildren([
indexRoute,
reportsRoute,
])
```
Use `authGuard` for pages that only require authentication and `createPermissionGuard` for pages that require a permission.
## Theming
The React template uses **shadcn/ui**-style components, Radix UI primitives, Tailwind CSS, and CSS variables.
Theme tokens are defined in `src/styles/globals.css`:
```css
:root {
--background: oklch(0.978 0.003 264);
--foreground: oklch(0.205 0.008 264);
--primary: oklch(0.48 0.10 278);
--radius: 0.5rem;
}
.dark {
--background: oklch(0.16 0.004 264);
--foreground: oklch(0.92 0.005 264);
--primary: oklch(0.62 0.12 278);
}
```
ABP Studio's modern wizard can generate different shadcn theme color presets and light/dark/system theme behavior.
## Changing Theme Colors
To make a quick theme change, edit the CSS variables in `src/styles/globals.css`:
```css
:root {
--primary: oklch(0.623 0.188 259.6);
--primary-foreground: oklch(1 0 0);
}
```
Because the generated shadcn/ui components consume these variables through Tailwind tokens, the change applies across buttons, links, active sidebar entries, focus rings, and other components that use the primary color.
## Theme Mode Switcher
Theme mode is handled by `src/lib/theme/ThemeProvider.tsx`. It supports:
- `light`
- `dark`
- `system`
The header cycles through the allowed modes:
```tsx
const THEME_CYCLE: Theme[] = ['light', 'dark', 'system']
function ThemeToggle() {
const { theme, resolvedTheme, setTheme } = useTheme()
function cycleTheme() {
const currentIndex = THEME_CYCLE.indexOf(theme)
const nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % THEME_CYCLE.length
setTheme(THEME_CYCLE[nextIndex])
}
return <Button variant="ghost" size="icon" onClick={cycleTheme}>...</Button>
}
```
To remove the switcher or replace it with a dropdown, edit `src/components/layout/Header.tsx`.
## Modifying the Sidebar Menu
Sidebar navigation is defined in `src/lib/routing/route-config.ts`.
Add a menu item:
```ts
import { BarChart3 } from 'lucide-react'
export const routeConfig: RouteConfigItem[] = [
{
path: '/reports',
nameKey: 'Menu:Reports',
icon: BarChart3,
order: 10,
requiredPolicy: 'MyProjectName.Reports',
},
]
```
Then add the localization key to `src/locales/en.json`:
```json
{
"Menu:Reports": "Reports"
}
```
Use these properties depending on the menu item:
| Property | Use |
| --- | --- |
| `path` | Internal route path or logical path for an external item. |
| `nameKey` | Localization key shown in the sidebar. |
| `icon` | Optional Lucide icon. |
| `order` | Sorting order. |
| `requiredPolicy` | Hide the item unless the permission is granted. |
| `requiresAuth` | Hide the item unless the user is authenticated. |
| `externalHref` | Open an external URL or another app, such as the Admin Console. |
| `children` | Add nested sidebar items. |
## Sidebar vs User Menu
Use the **sidebar navigation** for application pages and module entry points.
Use the **user menu** for account-specific actions, profile links, sessions, security logs, linked accounts, and logout. The user menu is implemented in `src/components/layout/UserMenu.tsx`.
Example user menu item:
```tsx
<DropdownMenuItem asChild className="cursor-pointer">
<a href="/account/preferences">
<Settings className="size-4" />
{t('MyAccount::Preferences')}
</a>
</DropdownMenuItem>
```
## Customizing UI Components
shadcn/ui components are copied into your project under `src/components/ui/`. They are not black-box components from a package. You can edit them directly.
For example:
- Change button variants in `src/components/ui/button.tsx`.
- Change dialog structure in `src/components/ui/dialog.tsx`.
- Add a new reusable component under `src/components/ui/`.
- Add feature-specific components under `src/components/<feature>/`.
Keep generic primitives in `components/ui` and business-specific components close to the feature or page that owns them.
## See Also
- [Components](./components/index.md)
- [Permission Management](./permission-management.md)
- [Admin Console](./admin-console.md)

121
docs/en/framework/ui/react/environment-variables.md

@ -0,0 +1,121 @@
```json
//[doc-seo]
{
"Description": "Learn how runtime configuration and environment variables work in ABP React UI applications."
}
```
# Environment Variables
ABP React UI applications use a runtime configuration file and Vite environment variables together. The template is preconfigured by ABP Studio's modern wizard, available with ABP Studio **v3.0+**, so a newly created solution already contains working local values for the API, Auth Server, OpenIddict client, and Admin Console link.
You usually change these values when moving the application to another environment such as staging or production.
## Configuration Sources
The React template reads configuration from these places:
- `dynamic-env.json`: runtime configuration that can be changed without rebuilding the application.
- `public/dynamic-env.json`: the file served by the app. The Vite build copies the root `dynamic-env.json` into this location when it exists.
- `src/env.ts`: local fallback values used when runtime configuration is not loaded.
- `.env` files / shell variables: Vite variables such as `VITE_API_URL`, `VITE_AUTH_URL`, and `VITE_APP_URL`.
For layered and single-layer modern templates, the React app is in the `react/` folder. For the microservice modern template, it is in `apps/react/`.
## `dynamic-env.json`
The runtime configuration file has the same purpose as Angular's dynamic environment configuration: it lets you deploy the same build artifact to different environments and change the API or authentication endpoints at runtime.
```json
{
"application": {
"baseUrl": "https://localhost:3000",
"name": "Acme.BookStore"
},
"oAuthConfig": {
"issuer": "https://localhost:44301/",
"redirectUri": "https://localhost:3000",
"clientId": "Acme_BookStore_App",
"scope": "offline_access openid profile email phone AuthServer IdentityService AdministrationService"
},
"apis": {
"default": {
"url": "https://localhost:44300",
"rootNamespace": "Acme.BookStore"
}
},
"adminConsoleUrl": "https://localhost:44307"
}
```
The template loads `/dynamic-env.json` first and then tries `/getEnvConfig` for compatibility with environments that expose the file through that endpoint.
## Available Values
| Key | Description |
| --- | --- |
| `application.baseUrl` | Public URL of the React application. It is used as a fallback for OAuth redirect URLs. |
| `application.name` | Application name. |
| `application.logoUrl` | Optional logo URL for application branding. |
| `oAuthConfig.issuer` | Auth Server / OpenIddict authority URL. |
| `oAuthConfig.redirectUri` | Redirect URI registered for the React OpenIddict client. |
| `oAuthConfig.clientId` | OpenIddict client ID. The main React app uses `<ProjectName>_App`. |
| `oAuthConfig.scope` | OAuth scopes requested by the SPA. |
| `apis.default.url` | Backend API base URL. In microservice solutions, this normally points to the Web Gateway. |
| `apis.default.rootNamespace` | Root namespace used by generated API code and module-specific clients. |
| `adminConsoleUrl` | Origin of the Admin Console app. The React template uses it to open `/admin-console`. |
The `DynamicEnv` type also includes fields such as `production`, `oAuthConfig.requireHttps`, `oAuthConfig.responseType`, `oAuthConfig.strictDiscoveryDocumentValidation`, and `oAuthConfig.skipIssuerCheck`. The template's OIDC setup always uses the Authorization Code flow by setting `responseType` to `code`.
## Vite Variables
The React template uses Vite and reads environment variables with `loadEnv(mode, process.cwd(), '')`, so variables are not limited to the `VITE_` prefix inside `vite.config.ts`.
The important variables for developers are:
| Variable | Description |
| --- | --- |
| `VITE_API_URL` | Overrides the backend API or gateway URL used by the dev proxy and runtime fallback. |
| `VITE_AUTH_URL` | Overrides the Auth Server URL used by the dev proxy and runtime fallback. If omitted, the dev proxy can fall back to `VITE_API_URL`. |
| `VITE_APP_URL` | Overrides the React app URL used as the OAuth redirect URI fallback. |
Example:
```bash
VITE_API_URL=https://api.bookstore.example.com
VITE_AUTH_URL=https://auth.bookstore.example.com
VITE_APP_URL=https://bookstore.example.com
```
## What ABP Studio Preconfigures
When a React solution is created with ABP Studio v3.0+ or `abp new --modern`, the template fills these values from the generated solution configuration:
- Local launch ports for the React app, Web Gateway/API host, Auth Server, and Admin Console.
- The OpenIddict client ID, usually `<ProjectName>_App`.
- OAuth scopes based on the selected modules, such as Identity, Administration, SaaS, Audit Logging, GDPR, File Management, AI Management, Language Management, or Chat.
- `adminConsoleUrl` when the template includes a separate Admin Console application.
For local development, these generated values should work without manual changes. For production, update the API URL, Auth Server URL, redirect URI, client ID if you changed the seeded client, and any environment-specific scopes.
## Development Proxy
In development, `vite.config.ts` proxies these paths:
- `/api` to `VITE_API_URL` or the generated API/gateway URL.
- `/connect` to `VITE_AUTH_URL`, `VITE_API_URL`, or the generated Auth Server URL.
- `/getEnvConfig` to `VITE_API_URL` or the generated API/gateway URL.
This allows the React app to call same-origin paths during development while the backend services run on their own ports.
## Deployment
For deployment, prefer changing `dynamic-env.json` instead of rebuilding the React application for each environment. The file should be served with `application/json` content type and should not be rewritten to `index.html` by SPA fallback rules.
If your server exposes `/getEnvConfig`, configure it to return the same JSON content as `dynamic-env.json`.
## See Also
- [React UI](./index.md)
- [Authorization](./authorization.md)
- [HTTP Requests](./http-requests.md)

213
docs/en/framework/ui/react/http-requests.md

@ -0,0 +1,213 @@
```json
//[doc-seo]
{
"Description": "Learn how HTTP requests are made in ABP React UI applications with Axios, runtime configuration, and ABP interceptors."
}
```
# HTTP Requests
ABP React UI templates use [Axios](https://axios-http.com/) for HTTP requests. The generated app contains a shared Axios instance with ABP-specific request and response interceptors, plus typed API modules for backend endpoints.
The shared client is defined in `src/lib/api/axios.ts` and exported as `api`.
## Base URL
The Axios base URL is resolved at request time from runtime configuration:
```ts
export function getApiBaseUrl(): string {
const apiUrl = getApiUrl()
if (apiUrl.startsWith('http://') || apiUrl.startsWith('https://')) {
return apiUrl.replace(/\/$/, '') + '/api'
}
if (import.meta.env.DEV) {
return '/api'
}
return apiUrl.replace(/\/$/, '') + '/api'
}
```
The API URL comes from:
1. `dynamic-env.json` -> `apis.default.url`
2. `VITE_API_URL`
3. `src/env.ts` generated fallback
In microservice solutions, `apis.default.url` normally points to the Web Gateway. In layered and single-layer solutions, it normally points to the HTTP API host.
## Shared Axios Instance
The template creates one shared instance:
```ts
export const api = axios.create({
baseURL: '',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json',
},
})
```
Use this instance for application API modules instead of creating new Axios clients. It centralizes ABP headers, authentication, tenant handling, language handling, and redirects.
## Request Interceptor
Before each request, the template:
- Sets `baseURL` from runtime configuration.
- Adds `Authorization: Bearer <token>` from the OIDC user.
- Adds `__tenant` when the user has selected a tenant.
- Adds `Accept-Language` from i18next.
- Keeps default AJAX headers such as `X-Requested-With`.
```ts
api.interceptors.request.use(async (config) => {
config.baseURL = getApiBaseUrl()
const user = await userManager.getUser()
if (user?.access_token) {
config.headers.Authorization = `Bearer ${user.access_token}`
}
const tenantId = sessionStorage.getItem('abp_tenant_id')
if (tenantId && !config.headers.__tenant) {
config.headers.__tenant = tenantId
}
if (i18n?.language) {
config.headers['Accept-Language'] =
config.headers['Accept-Language'] ?? i18n.language
}
return config
})
```
## Response Interceptor
The response interceptor handles common authorization failures:
- `401 Unauthorized`: redirects to login unless `skipAuthRedirect` is set.
- `403 Forbidden`: redirects to `/403` unless `skip403Redirect` is set.
- Other errors are rejected so the caller can handle them.
```ts
api.interceptors.response.use(
(response) => response,
async (error) => {
const status = error.response?.status
if (status === 401 && !error.config?.skipAuthRedirect) {
await userManager.signinRedirect()
return Promise.reject(new Error('Unauthorized - redirecting to login'))
}
if (status === 403 && !error.config?.skip403Redirect) {
window.location.href = '/403'
return Promise.reject(new Error('Forbidden'))
}
return Promise.reject(error)
}
)
```
Use `skipAuthRedirect` or `skip403Redirect` for calls where the component should handle the error itself.
## Typed API Modules
The template organizes backend calls under `src/lib/api/`. For example, the Books sample defines DTOs and functions in `books.ts`:
```ts
import { api } from './axios'
export interface PagedResultDto<T> {
items: T[]
totalCount: number
}
export interface BookDto {
id: string
name?: string
price: number
}
export async function getBooks(): Promise<PagedResultDto<BookDto>> {
const { data } = await api.get<PagedResultDto<BookDto>>('/app/book', {
params: {
maxResultCount: 10,
skipCount: 0,
},
})
return data
}
```
Notice that the API module calls `/app/book`, not `/api/app/book`. The shared Axios base URL already includes the `/api` prefix when needed.
## Using Requests from Components
The template uses TanStack Query for server state:
```tsx
const { data, isLoading } = useQuery({
queryKey: ['books', skipCount],
queryFn: () =>
getBooks({
maxResultCount: 10,
skipCount,
sorting: 'creationTime desc',
}),
})
```
Mutations use `useMutation` and invalidate related queries after success:
```tsx
const createMutation = useMutation({
mutationFn: createBook,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['books'] })
toast.success(t('AbpUi::SavedSuccessfully'))
},
})
```
## Adding a New API Module
Create a file under `src/lib/api/`:
```ts
import { api } from './axios'
export interface ProductDto {
id: string
name: string
}
export async function getProducts(): Promise<ProductDto[]> {
const { data } = await api.get<ProductDto[]>('/app/product')
return data
}
```
Then consume it from a component with TanStack Query:
```tsx
const productsQuery = useQuery({
queryKey: ['products'],
queryFn: getProducts,
})
```
## Development Proxy
In development, Vite proxies `/api`, `/connect`, and `/getEnvConfig`. This lets the React app use same-origin paths while calls are forwarded to the backend, Auth Server, or gateway configured by `VITE_API_URL` and `VITE_AUTH_URL`.
## See Also
- [Environment Variables](./environment-variables.md)
- [Authorization](./authorization.md)
- [Permission Management](./permission-management.md)

142
docs/en/framework/ui/react/index.md

@ -0,0 +1,142 @@
```json
//[doc-seo]
{
"Description": "Learn how to build modern web applications with ABP React UI, including runtime configuration, authentication, Admin Console, shadcn/ui components, and testing."
}
```
# React UI
ABP provides a **React UI** option for building modern, client-side web applications. React UI is part of the **modern template system** and is available with **ABP Studio v3.0+** through the Modern Wizard or with `abp new --modern` using [ABP CLI](../../../cli/index.md).
React UI is not available in classic, non-modern templates. Use ABP Studio's modern template flow or `Volo.Abp.Studio.Cli` to create a React-based solution.
## Technology Stack
The React UI template is built with:
| Technology | Purpose |
| --- | --- |
| [Vite](https://vite.dev/) | Build tool and dev server |
| [React](https://react.dev/) | UI framework |
| [TanStack Router](https://tanstack.com/router) | Client-side routing |
| [TanStack Query](https://tanstack.com/query) | Server state and API request orchestration |
| [shadcn/ui](https://ui.shadcn.com/) | Source-owned component library built on Radix UI and Tailwind CSS |
| [Zod](https://zod.dev/) | Schema validation |
| [React Hook Form](https://react-hook-form.com/) | Form state management |
| [Axios](https://axios-http.com/) | HTTP client |
| [Vitest](https://vitest.dev/) | Unit testing |
| [OpenID Connect / OIDC](https://openid.net/connect/) | Authentication against the ABP Auth Server |
The template also includes ABP-specific NPM packages:
- [`@volo/abp-app-config`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-app-config)
- [`@volo/abp-oidc-auth`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-oidc-auth)
- [`@volo/abp-react-app-config`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-react-app-config)
- [`@volo/abp-react-oidc-auth`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-react-oidc-auth)
## React App and Admin Console
A modern React solution contains two UI surfaces:
- **Your React application**: the developer-owned SPA where you build application-specific pages and features.
- **ABP Admin Console**: the React-based administration UI for ABP modules.
The Admin Console is provided by the `Volo.Abp.AdminConsole` NuGet package in layered and single-layer templates. In microservice templates, it is also generated as a separate `apps/react-admin-console/` app and served through the Web Gateway.
See [Admin Console](./admin-console.md) for hosting, module discovery, and permission details.
## Solution Structure
The React app location depends on the modern template type:
- **Layered (`app --modern`) and single-layer (`app-nolayers --modern`)**: the React app lives in the `react/` folder at the solution root.
- **Microservice (`microservice --modern`)**: the React app lives at `apps/react/`.
Typical structure:
```text
react/
├── dynamic-env.json
├── public/
├── src/
│ ├── components/
│ ├── lib/
│ ├── locales/
│ ├── pages/
│ ├── routes/
│ └── main.tsx
├── package.json
├── vite.config.ts
└── vitest.config.ts
```
## Creating a Solution
Install or update `Volo.Abp.Studio.Cli`, then create a modern solution:
```bash
# Layered app with React UI
abp new Acme.BookStore --template app --modern --ui-framework react
# Single-layer app with React UI
abp new Acme.BookStore --template app-nolayers --modern --ui-framework react
# Microservice solution with React UI
abp new Acme.BookStore --template microservice --modern --ui-framework react
```
You can also use ABP Studio v3.0+ and select the modern template flow in the New Solution wizard. The wizard preconfigures local ports, runtime configuration, OIDC clients, theme options, and React/Admin Console wiring based on the selected template and modules.
## Running the Application
Start the backend from ABP Studio or by running the backend host projects, then start the React development server.
For layered and single-layer templates:
```bash
cd react
npm install
npm run dev
```
For microservice templates:
```bash
cd apps/react
npm install
npm run dev
```
Run tests with:
```bash
npm run test
```
Build for production with:
```bash
npm run build
```
## Documentation Map
Use these pages to learn each part of the React UI:
- [Environment Variables](./environment-variables.md): runtime configuration, `dynamic-env.json`, Vite variables, and Studio-generated defaults.
- [Authorization](./authorization.md): OIDC, Authorization Code flow with PKCE, auth provider, hooks, and route guards.
- [Localization](./localization.md): i18next, local JSON resources, ABP localization keys, and request culture.
- [Permission Management](./permission-management.md): fetching granted policies, `usePermissions()`, route protection, and conditional UI.
- [HTTP Requests](./http-requests.md): Axios setup, interceptors, typed API modules, and TanStack Query usage.
- [Customization](./customization.md): changing pages, themes, sidebar items, user menu entries, and shadcn/ui components.
- [Components](./components/index.md): component architecture, UI primitives, layout components, forms, and routing.
- [Unit Testing](./unit-testing.md): Vitest, React Testing Library, examples, and test workflow.
- [Admin Console](./admin-console.md): the `Volo.Abp.AdminConsole` package, `/admin-console/*` hosting, module discovery, and optional modules.
## See Also
- [ABP Studio](../../../studio/index.md)
- [ABP CLI](../../../cli/index.md)
- [Authorization](../../../framework/fundamentals/authorization/index.md)
- [Localization](../../../framework/fundamentals/localization.md)

158
docs/en/framework/ui/react/localization.md

@ -0,0 +1,158 @@
```json
//[doc-seo]
{
"Description": "Learn how localization works in ABP React UI applications with i18next and ABP application configuration."
}
```
# Localization
ABP React UI templates use [i18next](https://www.i18next.com/) with [react-i18next](https://react.i18next.com/). The generated app includes local JSON resources and integrates with ABP application configuration through the `@volo/abp-app-config` packages.
## Localization Files
The main React app stores client-side translations under `src/locales/`.
```text
src/
├── locales/
│ └── en.json
└── lib/
└── i18n/
└── i18n.ts
```
The default `i18n.ts` imports the English resource and registers it:
```ts
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import en from '@/locales/en.json'
i18n.use(initReactI18next).init({
resources: {
en: { translation: en },
},
lng: 'en',
fallbackLng: 'en',
keySeparator: false,
nsSeparator: false,
interpolation: {
escapeValue: false,
},
})
```
`keySeparator` and `nsSeparator` are disabled so ABP-style keys such as `AbpIdentity::Users` and `Menu:Home` can be used directly.
## Using Localized Text
Use `useTranslation()` from `react-i18next` in components:
```tsx
import { useTranslation } from 'react-i18next'
export function BooksTitle() {
const { t } = useTranslation()
return <h1>{t('Menu:Books')}</h1>
}
```
ABP localization keys commonly use the `ResourceName::Key` format:
```tsx
{t('AbpIdentity::Users')}
{t('AbpAccount::Login')}
{t('AbpUi::SavedSuccessfully')}
```
Application-specific menu keys may use names like `Menu:Home` or `Menu:Books`.
## Adding a Translation
Add the key to `src/locales/en.json`:
```json
{
"Menu:Reports": "Reports",
"Reports": "Reports"
}
```
Then use it from a component:
```tsx
const { t } = useTranslation()
return <h1>{t('Reports')}</h1>
```
## Adding a Language
Create a new JSON file, for example `src/locales/tr.json`:
```json
{
"Menu:Reports": "Raporlar",
"Reports": "Raporlar"
}
```
Register it in `src/lib/i18n/i18n.ts`:
```ts
import en from '@/locales/en.json'
import tr from '@/locales/tr.json'
i18n.use(initReactI18next).init({
resources: {
en: { translation: en },
tr: { translation: tr },
},
lng: 'en',
fallbackLng: 'en',
})
```
If you add a language selector, call `i18n.changeLanguage('tr')` when the user chooses Turkish.
## Server-Side ABP Localization
ABP's backend localization system is still the source of truth for server-defined resources, validation messages, exception messages, and module texts. The React app uses ABP application configuration through `@volo/abp-app-config` / `@volo/abp-react-app-config` for auth and configuration data, and these packages can include localization resources when configured to do so.
The main template currently creates the app configuration client with:
```ts
export const appConfig = createAbpReactAppConfig({
baseUrl: () => getApiUrl(),
includeLocalizationResources: false,
})
```
Because `includeLocalizationResources` is disabled in the main React template, UI text is normally loaded from `src/locales/*.json`. If you enable server-provided localization resources, make sure your UI initialization merges them into i18next before rendering localized components.
## Request Culture
The shared Axios client sends the active i18next language with each request:
```ts
if (i18n?.language) {
config.headers['Accept-Language'] =
config.headers['Accept-Language'] ?? i18n.language
}
```
This lets backend responses, validation messages, and exception messages use the selected culture when the server supports it.
## Admin Console Localization
The Admin Console has its own React app and localization setup. In layered and single-layer templates, it is served from the `Volo.Abp.AdminConsole` package. In microservice templates, it is generated as `apps/react-admin-console/`.
The Admin Console host can expose available languages through `AdminConsole:LocalizationLanguages`, and `/admin-console/api/config` returns the normalized language list.
## See Also
- [React UI](./index.md)
- [HTTP Requests](./http-requests.md)
- [Localization](../../../framework/fundamentals/localization.md)

171
docs/en/framework/ui/react/permission-management.md

@ -0,0 +1,171 @@
```json
//[doc-seo]
{
"Description": "Learn how permissions are fetched, stored, checked, and applied in ABP React UI applications."
}
```
# Permission Management
ABP permissions are defined on the server side and are exposed to the React app through ABP application configuration. The React template uses those permissions to protect routes, hide sidebar items, and conditionally render UI actions.
For the server-side permission system, see [Authorization](../../../framework/fundamentals/authorization/index.md).
## Packages
The React template uses:
| Package | Purpose |
| --- | --- |
| `@volo/abp-app-config` | Framework-agnostic ABP application configuration client. |
| `@volo/abp-react-app-config` | React hooks and adapters for application configuration. |
The template creates a shared app configuration client in `src/lib/auth/permissions.ts`:
```ts
export const appConfig = createAbpReactAppConfig({
baseUrl: () => getApiUrl(),
includeLocalizationResources: false,
})
```
## Fetching Permissions
After the user logs in, `AuthProvider` fetches application configuration with the current access token:
```ts
const user = await authClient.getUserManager().getUser()
if (user && !user.expired) {
await fetchAppConfig(user.access_token ?? null)
}
```
`fetchAppConfig` also sends the current tenant ID when one is selected:
```ts
export async function fetchAppConfig(token: string | null): Promise<void> {
const headers: Record<string, string> = {}
const tenantId = sessionStorage.getItem('abp_tenant_id')
if (tenantId) headers.__tenant = tenantId
await appConfig.fetchConfig(token, { headers })
}
```
The response includes the current user's granted policies. These are stored by the app configuration client and exposed to React components.
## Checking Permissions in Components
Use `usePermissions()` from `src/lib/auth/permissions.ts`:
```tsx
import { usePermissions } from '@/lib/auth/permissions'
export function BookActions() {
const { isGranted } = usePermissions()
return (
<>
{isGranted('MyProjectName.Books.Edit') && <button>Edit</button>}
{isGranted('MyProjectName.Books.Delete') && <button>Delete</button>}
</>
)
}
```
The Books page uses this pattern for edit and delete actions:
```ts
const { isGranted } = usePermissions()
const canEdit = isGranted('MyProjectName.Books.Edit')
const canDelete = isGranted('MyProjectName.Books.Delete')
```
## Route Guards
Routes can require a permission by using `createPermissionGuard`:
```ts
const booksRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/books',
component: BooksPage,
beforeLoad: createPermissionGuard('MyProjectName.Books'),
})
```
`createPermissionGuard` runs the authentication guard first, fetches app configuration if needed, and redirects to `/403` when the required policy is not granted.
```ts
export function createPermissionGuard(requiredPolicy: string) {
return async (context: GuardContext) => {
await authGuard(context)
if (!appConfig.getSnapshot()?.initialized) {
const user = await userManager.getUser()
await fetchAppConfig(user?.access_token ?? null)
}
if (!isPolicyGranted(requiredPolicy)) throw redirect({ to: '/403' })
}
}
```
## Sidebar Visibility
The sidebar reads `routeConfig` and hides items that require missing permissions:
```ts
export const routeConfig: RouteConfigItem[] = [
{
path: '/identity/users',
nameKey: 'AbpIdentity::Users',
requiredPolicy: 'AbpIdentity.Users',
},
]
```
The sidebar checks each item:
```ts
if (item.requiresAuth && !isAuthenticated) return false
if (!item.requiredPolicy) return true
if (!isAuthenticated) return false
return isGranted(item.requiredPolicy)
```
Use `requiresAuth` for menu items that only require login. Use `requiredPolicy` when the item should only be visible to users with a specific permission.
## Compound Policies
The template's `isPolicyGranted` helper supports simple compound expressions:
- `PermissionA || PermissionB`
- `PermissionA && PermissionB`
This is useful for menu entries that should be visible when the user has one of several related module permissions.
## Where Permissions Are Applied
The generated React app uses permissions in these places:
- **Users page**: the `/identity/users` route and sidebar entry require `AbpIdentity.Users`. The page links to the Admin Console for full user and role management.
- **Books page**: the route requires `MyProjectName.Books`; edit and delete actions check `MyProjectName.Books.Edit` and `MyProjectName.Books.Delete`.
- **Admin Console link**: the sidebar entry uses `requiresAuth` because the Admin Console performs its own module and route permission checks.
The Admin Console applies module-specific permissions for pages such as:
- Identity users and roles: `AbpIdentity.*`.
- OpenIddict applications and scopes: `OpenIddictPro.Application` and `OpenIddictPro.Scope`.
- Audit Logging UI: `AuditLogging.AuditLogs`.
- Text Template Management: `TextTemplateManagement.*`.
- AI Management: `AIManagement.*`.
## Multi-Tenancy
When a tenant is selected, the template stores the tenant ID in `sessionStorage` as `abp_tenant_id`. Permission and API requests send it with the `__tenant` header. This ensures the backend returns permissions and data for the selected tenant context.
## See Also
- [Authorization](./authorization.md)
- [HTTP Requests](./http-requests.md)
- [Authorization](../../../framework/fundamentals/authorization/index.md)

150
docs/en/framework/ui/react/unit-testing.md

@ -0,0 +1,150 @@
```json
//[doc-seo]
{
"Description": "Learn how to run and write unit tests in ABP React UI applications with Vitest and React Testing Library."
}
```
# Unit Testing React UI
ABP React UI templates are preconfigured for unit testing. A solution created with ABP Studio v3.0+ or `abp new --modern --ui-framework react` includes Vitest, jsdom, React Testing Library, and jest-dom.
You can add a test file and run the test command without adding extra test infrastructure.
## Test Stack
The React template uses:
| Package | Purpose |
| --- | --- |
| `vitest` | Test runner and assertion library. |
| `jsdom` | Browser-like DOM environment for component tests. |
| `@testing-library/react` | Render React components and query the DOM like a user. |
| `@testing-library/jest-dom` | Extra DOM assertions such as `toBeInTheDocument`. |
The template also includes `src/test/setup.ts`, which imports `@testing-library/jest-dom/vitest` and initializes the React i18n setup.
## Configuration
The test configuration is in `vitest.config.ts`:
```ts
import { defineConfig } from 'vitest/config'
import react from '@vitejs/plugin-react'
import path from 'path'
export default defineConfig({
plugins: [react()],
test: {
environment: 'jsdom',
setupFiles: ['./src/test/setup.ts'],
include: ['src/**/*.{test,spec}.{ts,tsx}'],
globals: true,
},
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
})
```
Tests can import application files with the same `@/` alias used by the app.
## Running Tests
Install dependencies once:
```bash
npm install
```
Run tests in watch mode:
```bash
npm run test
```
Run tests once, which is useful for CI:
```bash
npm run test:run
```
The template's `package.json` maps these commands to `vitest` and `vitest run`.
## Example Test
The template includes example tests under `src/`. For example, `src/pages/home/HomePage.test.tsx` renders the home page and mocks the authentication hook:
```tsx
import { describe, it, expect, vi, beforeEach } from 'vitest'
import { render, screen } from '@testing-library/react'
import { HomePage } from './HomePage'
import * as auth from '@/lib/auth/AuthContext'
vi.mock('@/lib/auth/AuthContext', () => ({
useAuth: vi.fn(),
}))
describe('HomePage', () => {
beforeEach(() => {
vi.clearAllMocks()
})
it('renders login prompt when not authenticated', () => {
vi.mocked(auth.useAuth).mockReturnValue({
isAuthenticated: false,
isLoading: false,
user: null,
login: vi.fn(),
logout: vi.fn(),
navigateToLogin: vi.fn(),
getAccessToken: vi.fn(),
} as unknown as ReturnType<typeof auth.useAuth>)
render(<HomePage />)
expect(screen.getByText('Welcome')).toBeInTheDocument()
expect(screen.getByRole('button', { name: /login/i })).toBeInTheDocument()
})
})
```
This style keeps the test focused on visible behavior. Dependencies that would require real authentication, network calls, or browser redirects are mocked.
## Writing a Component Test
Create a `*.test.tsx` file next to the component:
```tsx
import { render, screen } from '@testing-library/react'
import { describe, expect, it } from 'vitest'
import { Button } from '@/components/ui/button'
describe('Button', () => {
it('renders its content', () => {
render(<Button>Save</Button>)
expect(screen.getByRole('button', { name: 'Save' })).toBeInTheDocument()
})
})
```
Prefer queries such as `getByRole`, `getByLabelText`, and `getByText` because they describe what the user can see or do.
## Writing a Service or Hook Test
For non-component logic, use Vitest directly. The template includes tests for routing guards, permissions, authentication context, and Axios interceptors.
When testing API code, mock the shared Axios instance or the lower-level dependency instead of calling a real backend. When testing permission behavior, mock the application configuration client or use the exported permission helpers.
## Interpreting Output
Vitest reports each test file, failed assertions, stack traces, and a summary of passed/failed tests. In watch mode, it reruns affected tests when files change. In `test:run` mode, Vitest exits with a non-zero status code if any test fails, which makes it suitable for CI pipelines.
If a component test fails because an ABP service is not initialized, mock the hook or provider used by the component. For example, pages that call `useAuth()` or `usePermissions()` should provide a controlled mock for those hooks unless the test is specifically verifying the provider.
## See Also
- [Components](./components/index.md)
- [Authorization](./authorization.md)
- [Permission Management](./permission-management.md)

12
docs/en/modules/openiddict.md

@ -303,6 +303,18 @@ PreConfigure<AbpOpenIddictAspNetCoreOptions>(options =>
- `UpdateAbpClaimTypes(default: true)`: Updates `AbpClaimTypes` to be compatible with the Openiddict claims.
- `AddDevelopmentEncryptionAndSigningCertificate(default: true)`: Registers (and generates if necessary) a user-specific development encryption/development signing certificate. This is a certificate used for signing and encrypting the tokens and for **development environment only**. You must set it to **false** for non-development environments.
- `UseDefaultScopesForClientCredentials(default: false)`: When set to `true`, the access token issued for the `client_credentials` grant automatically grants the scopes configured on the client application (permissions prefixed with `oi_scp:`) when the client does not explicitly request any scope.
- `UseDefaultScopesForPassword(default: false)`: When set to `true`, the token response for the `password` grant automatically grants the scopes configured on the client application when the client does not explicitly request any scope. If the configured scopes include `openid`/`profile`/`email`/`roles`, the corresponding `id_token` and claim destinations are affected as well.
- `UseDefaultScopesForTokenExchange(default: false)`: When set to `true`, the token response for the `urn:ietf:params:oauth:grant-type:token-exchange` grant automatically grants the scopes configured on the client application when the client does not explicitly request any scope. If the configured scopes include `openid`/`profile`/`email`/`roles`, the corresponding `id_token` and claim destinations are affected as well.
Example to enable the default-scope fallback for the `client_credentials` grant:
```csharp
PreConfigure<AbpOpenIddictAspNetCoreOptions>(options =>
{
options.UseDefaultScopesForClientCredentials = true;
});
```
> `AddDevelopmentEncryptionAndSigningCertificate` cannot be used in applications deployed on IIS or Azure App Service: trying to use them on IIS or Azure App Service will result in an exception being thrown at runtime (unless the application pool is configured to load a user profile). To avoid that, consider creating self-signed certificates and storing them in the X.509 certificates store of the host machine(s). Please refer to: https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-development-certificate

26
docs/en/release-info/migration-guides/abp-10-0.md

@ -133,4 +133,28 @@ See the [Add failure retry policy to InboxProcessor](https://github.com/abpframe
Starting from **ABP 10.0**, the [`HideErrors`](../../framework/fundamentals/caching#Available-Options) option of `AbpDistributedCacheOptions` is **disabled by default in the development environment**.
By default, ABP hides and logs cache server errors to keep the application running even when the cache is unavailable.
However, in the **development environment**, errors are no longer hidden so that developers can immediately detect and fix **any cache server issues** (such as connection, configuration, or runtime errors).
However, in the **development environment**, errors are no longer hidden so that developers can immediately detect and fix **any cache server issues** (such as connection, configuration, or runtime errors).
### Angular `LOGO_APP_NAME_TOKEN` May Need Explicit Provider in Module-based Apps
In ABP v10, the logo/app-name binding moved to the `provideLogo(withEnvironmentOptions(...))` API from `@abp/ng.theme.shared`.
For standalone Angular applications, configuring `provideLogo(withEnvironmentOptions(environment))` in `app.config.ts` is enough.
For NgModule-based applications, some setups may still show the literal `ProjectName` text (the default value of `LOGO_APP_NAME_TOKEN`) instead of `environment.application.name`. In that case, provide the token explicitly in your module providers:
```ts
import { LOGO_APP_NAME_TOKEN } from '@abp/ng.theme.shared';
import { environment } from '../environments/environment';
@NgModule({
// ...
providers: [
// ...
{ provide: LOGO_APP_NAME_TOKEN, useValue: environment.application.name },
],
})
export class AppModule {}
```
For logo customization/replacement details, see the [Component Replacement](../../framework/ui/angular/component-replacement.md#how-to-replace-logocomponent) documentation.

14
docs/en/release-info/migration-guides/abp-10-1.md

@ -60,6 +60,20 @@ ABP now targets Angular v21 (up from v20). For existing Angular projects, apply
providers: [provideZoneChangeDetection(), ...appConfig.providers],
}).catch(err => console.error(err));
```
If you are using a module-based structure instead of a standalone one, update the providers in `app.module.ts`:
```ts
@NgModule({
declarations: [AppComponent],
providers: [
//...
provideZoneChangeDetection(),
],
bootstrap: [AppComponent],
})
export class AppModule {}
```
- **tsconfig.json:** Align with the new property formats to avoid build issues:
```json
/* angular/tsconfig.json */

63
docs/en/studio/release-notes.md

@ -9,7 +9,28 @@
This document contains **brief release notes** for each ABP Studio release. Release notes only include **major features** and **visible enhancements**. Therefore, they don't include all the development done in the related version.
## 2.2.7 (2026-04-20) Latest
## 3.0.1 (2026-05-06) Latest
* Enhanced Project Wizard: Fixed the optional module selection step for a smoother project setup experience
* React Admin Console Improvements: Resolved identified issues in the React administration templates for better stability
* MacOS Performance: Optimized the internal build pipeline for a more reliable experience on Apple devices
* Stability Fixes: Improved core UI components to ensure parameter consistency across updates
## 3.0.0 (2026-05-06)
* Introducing ABP AI Agent: A next-generation smart assistant to accelerate your development
* Enhanced ABP Coding Agent: Smarter code generation and guidance integrated directly into your workflow
* Modern UI Redesign: New "Bento-style" dashboard and a streamlined single sidebar for better focus
* Drag & Drop Support: Easily open your projects by dragging .sln, .slnx, or .abpsln files into the app
* Improved React Templates: Optimized authentication, local debugging, and a new "Thin UI" layered template option
* CMS Kit Newsletter Integration: Ready-to-use newsletter component for public websites
* Faster CLI Experience: Simplified abp login process and improved help output for better usability
* Enhanced Solution Runner: Smarter project management and more reliable configuration handling
* Simplified Project Structure: Legacy systems renamed to "Classic" for a cleaner transition to modern architectures
* System Stability: Significant reduction in background noise/errors and optimized performance
* Global Platform Update: Fully updated to the latest underlying framework versions (v10.3.0)
## 2.2.7 (2026-04-20)
* Improved Blazor WebApp template setup for easier tiered application development
* Added application version tracking in analytics events
@ -24,38 +45,38 @@ This document contains **brief release notes** for each ABP Studio release. Rele
## 2.2.6 (2026-04-08)
- Disable Scriban 7.0 cumulative output limit for template rendering
* Disable Scriban 7.0 cumulative output limit for template rendering
## 2.2.5 (2026-04-08)
- Upgraded GPT-5 → GPT-5.4 and improved AI management (providers, blob storage, CLI options)
- Fixed critical build issues (MongoDB, MAUI) and improved overall stability
- Enhanced monitoring (HTTP requests & exceptions)
- Added DBMS auto-detection from connection string
- Upgraded to ABP 10.2 and Scriban 7.0.0
- Improved developer experience and telemetry (PostHog)
- Minor UI fixes and workflow adjustments (manual build trigger)
* Upgraded GPT-5 → GPT-5.4 and improved AI management (providers, blob storage, CLI options)
* Fixed critical build issues (MongoDB, MAUI) and improved overall stability
* Enhanced monitoring (HTTP requests & exceptions)
* Added DBMS auto-detection from connection string
* Upgraded to ABP 10.2 and Scriban 7.0.0
* Improved developer experience and telemetry (PostHog)
* Minor UI fixes and workflow adjustments (manual build trigger)
## 2.2.4 (2026-03-25)
- Add `Template Create and Build` workflow
- Disable NuGetAudit in template common.props to prevent CLI deadlock during initial migration
* Add `Template Create and Build` workflow
* Disable NuGetAudit in template common.props to prevent CLI deadlock during initial migration
## 2.2.3 (2026-03-24)
- Fix PostHog environment detection
* Fix PostHog environment detection
## 2.2.1 (2026-02-20)
- Fix tiered Blazor WebApp template HttpApi reference
- Add LeptonX theme templates AuthServer and HttpApi projects
- Enable razor runtime compilation on templates
- Configure HttpClientFactoryOptions for CLI client
- Bump ABP to 10.1.1 and LeptonX to 5.1.1
- Blazor & Angular UIs: Add AI Management option to the Startup Templates (app-nolayers, app, ms templates)
- Handle docker container start failures in solution runner
- Fix import module version dropdown ordering
- Add PostHog integration for Studio and CLI
* Fix tiered Blazor WebApp template HttpApi reference
* Add LeptonX theme templates AuthServer and HttpApi projects
* Enable razor runtime compilation on templates
* Configure HttpClientFactoryOptions for CLI client
* Bump ABP to 10.1.1 and LeptonX to 5.1.1
* Blazor & Angular UIs: Add AI Management option to the Startup Templates (app-nolayers, app, ms templates)
* Handle docker container start failures in solution runner
* Fix import module version dropdown ordering
* Add PostHog integration for Studio and CLI
## 2.2.1 (2026-02-20)

4
docs/en/studio/version-mapping.md

@ -11,8 +11,8 @@ This document provides a general overview of the relationship between various ve
| **ABP Studio Version** | **ABP Version of Startup Template** |
|------------------------|---------------------------|
| 2.2.7 | 10.3.0 |
| 2.2.5 - 2.2.6 | 10.2.0 |
| 2.2.7 - 3.0.1 | 10.3.0 |
| 2.2.5 - 2.2.6 | 10.2.0 |
| 2.2.2 - 2.2.4 | 10.1.1 |
| 2.2.1 | 10.1.0 |
| 2.1.5 - 2.1.9 | 10.0.2 |

12
docs/en/tutorials/modular-crm/part-08.md

@ -176,8 +176,20 @@ Now, you know the fundamental principles and mechanics of building sophisticated
## Download the Source Code
{{if UI == "MVC"}}
You can download the completed sample solution [here](https://github.com/abpframework/abp-samples/tree/master/ModularCRM).
{{else if UI == "BlazorWebApp"}}
You can download the completed sample solution [here](https://github.com/abpframework/abp-samples/tree/master/ModularCRM-BlazorWebApp).
{{else if UI == "NG"}}
You can download the completed sample solution [here](https://github.com/abpframework/abp-samples/tree/master/NG.ModularCRM).
{{end}}
## See Also
See the following sections for additional resources.

37
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperOutputExtensions.cs

@ -1,11 +1,17 @@
using Microsoft.AspNetCore.Razor.TagHelpers;
using System;
using System.IO;
using System.Linq;
using System.Text.Encodings.Web;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
public static class TagHelperOutputExtensions
{
// ASCII whitespace per the HTML5 spec, used to tokenize space-separated
// attribute values such as aria-describedby.
private static readonly char[] HtmlAsciiWhitespace = { ' ', '\t', '\n', '\r', '\f' };
public static string Render(this TagHelperOutput output, HtmlEncoder htmlEncoder)
{
using (var writer = new StringWriter())
@ -14,4 +20,35 @@ public static class TagHelperOutputExtensions
return writer.ToString();
}
}
/// <summary>
/// Appends an id token to the space-separated <c>aria-describedby</c> attribute,
/// preserving any tokens that were already present (e.g. provided by the consumer)
/// and skipping the token when it is already in the list.
/// </summary>
public static void AppendAriaDescribedby(this TagHelperOutput output, string token)
{
if (string.IsNullOrEmpty(token))
{
return;
}
var existing = output.Attributes
.FirstOrDefault(a => string.Equals(a.Name, "aria-describedby", StringComparison.OrdinalIgnoreCase))
?.Value?.ToString();
if (string.IsNullOrWhiteSpace(existing))
{
output.Attributes.SetAttribute("aria-describedby", token);
return;
}
var tokens = existing.Split(HtmlAsciiWhitespace, StringSplitOptions.RemoveEmptyEntries);
if (tokens.Any(t => t == token))
{
return;
}
output.Attributes.SetAttribute("aria-describedby", existing + " " + token);
}
}

17
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs

@ -88,10 +88,10 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
var (inputTag, isCheckBox) = await GetInputTagHelperOutputAsync(context, output);
context.Items[nameof(IsOutputHidden)] = IsOutputHidden(inputTag);
var inputHtml = inputTag.Render(_encoder);
var label = await GetLabelAsHtmlAsync(context, output, inputTag, isCheckBox);
var info = GetInfoAsHtml(context, output, inputTag, isCheckBox);
var validation = isCheckBox ? "" : await GetValidationAsHtmlAsync(context, output, inputTag);
var inputHtml = inputTag.Render(_encoder);
return (GetContent(context, output, label, inputHtml, validation, info, isCheckBox), isCheckBox);
}
@ -259,15 +259,14 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
}
var idAttr = inputTagHelperOutput.Attributes.FirstOrDefault(a => a.Name == "id");
var idValue = idAttr?.Value?.ToString();
if (idAttr == null)
if (string.IsNullOrEmpty(idValue))
{
return;
}
var infoText = _tagHelperLocalizer.GetLocalizedText(idAttr.Value + "InfoText", TagHelper.AspFor.ModelExplorer);
inputTagHelperOutput.Attributes.Add("aria-describedby", infoText);
inputTagHelperOutput.AppendAriaDescribedby(idValue + "InfoText");
}
protected virtual bool IsInputCheckbox(TagHelperContext context, TagHelperOutput output, TagHelperAttributeList attributes)
@ -356,14 +355,18 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
}
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
var idValue = idAttr?.Value?.ToString();
var localizedText = _tagHelperLocalizer.GetLocalizedText(text, TagHelper.AspFor.ModelExplorer);
var div = new TagBuilder("div");
div.Attributes.Add("id", idAttr?.Value + "InfoText");
div.AddCssClass("form-text");
div.InnerHtml.Append(localizedText);
inputTag.Attributes.Add("aria-describedby", idAttr?.Value + "InfoText");
if (!string.IsNullOrEmpty(idValue))
{
div.Attributes.Add("id", idValue + "InfoText");
inputTag.AppendAriaDescribedby(idValue + "InfoText");
}
return div.ToHtmlString();
}

25
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs

@ -73,10 +73,10 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
protected virtual async Task<string> GetFormInputGroupAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent)
{
var selectTag = await GetSelectTagAsync(context, output, childContent);
var selectAsHtml = selectTag.Render(_encoder);
var label = await GetLabelAsHtmlAsync(context, output, selectTag);
var validation = await GetValidationAsHtmlAsync(context, output, selectTag);
var infoText = GetInfoAsHtml(context, output, selectTag);
var selectAsHtml = selectTag.Render(_encoder);
return TagHelper.FloatingLabel ? selectAsHtml + Environment.NewLine + label + Environment.NewLine + infoText + Environment.NewLine + validation :
label + Environment.NewLine + selectAsHtml + Environment.NewLine + infoText + Environment.NewLine + validation;
@ -216,15 +216,14 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
}
var idAttr = inputTagHelperOutput.Attributes.FirstOrDefault(a => a.Name == "id");
var idValue = idAttr?.Value?.ToString();
if (idAttr == null)
if (string.IsNullOrEmpty(idValue))
{
return;
}
var infoText = _tagHelperLocalizer.GetLocalizedText(idAttr.Value + "InfoText", TagHelper.AspFor.ModelExplorer);
inputTagHelperOutput.Attributes.Add("aria-describedby", infoText);
inputTagHelperOutput.AppendAriaDescribedby(idValue + "InfoText");
}
protected virtual string GetInfoAsHtml(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag)
@ -249,14 +248,20 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
}
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
var idValue = idAttr?.Value?.ToString();
var localizedText = _tagHelperLocalizer.GetLocalizedText(text, TagHelper.AspFor.ModelExplorer);
var small = new TagBuilder("small");
small.Attributes.Add("id", idAttr?.Value?.ToString() + "InfoText");
small.AddCssClass("form-text");
small.InnerHtml.Append(localizedText);
var div = new TagBuilder("div");
div.AddCssClass("form-text");
div.InnerHtml.Append(localizedText);
if (!string.IsNullOrEmpty(idValue))
{
div.Attributes.Add("id", idValue + "InfoText");
inputTag.AppendAriaDescribedby(idValue + "InfoText");
}
return small.ToHtmlString();
return div.ToHtmlString();
}
protected virtual List<SelectListItem> GetSelectItemsFromEnum(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer)

20
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RequirePermissionsSimpleBatchStateChecker.cs

@ -11,15 +11,21 @@ namespace Volo.Abp.Authorization.Permissions;
public class RequirePermissionsSimpleBatchStateChecker<TState> : SimpleBatchStateCheckerBase<TState>
where TState : IHasSimpleStateCheckers<TState>
{
public static RequirePermissionsSimpleBatchStateChecker<TState> Current => _current.Value!;
private static readonly AsyncLocal<RequirePermissionsSimpleBatchStateChecker<TState>> _current = new AsyncLocal<RequirePermissionsSimpleBatchStateChecker<TState>>();
private readonly List<RequirePermissionsSimpleBatchStateCheckerModel<TState>> _models;
static RequirePermissionsSimpleBatchStateChecker()
public static RequirePermissionsSimpleBatchStateChecker<TState> Current
{
_current.Value = new RequirePermissionsSimpleBatchStateChecker<TState>();
get
{
if (_current.Value == null)
{
_current.Value = new RequirePermissionsSimpleBatchStateChecker<TState>();
}
return _current.Value;
}
}
private static readonly AsyncLocal<RequirePermissionsSimpleBatchStateChecker<TState>?> _current = new AsyncLocal<RequirePermissionsSimpleBatchStateChecker<TState>?>();
private readonly List<RequirePermissionsSimpleBatchStateCheckerModel<TState>> _models;
public RequirePermissionsSimpleBatchStateChecker()
{

6
framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs

@ -13,7 +13,11 @@ using Volo.Abp.Hangfire;
namespace Volo.Abp.BackgroundWorkers.Hangfire;
[Dependency(ReplaceServices = true)]
public class HangfireDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerManager, ISingletonDependency
public class HangfireDynamicBackgroundWorkerManager :
IDynamicBackgroundWorkerManager,
ISupportsRuntimeRegistration,
ISupportsCronScheduling,
ISingletonDependency
{
protected IServiceProvider ServiceProvider { get; }
protected IDynamicBackgroundWorkerHandlerRegistry HandlerRegistry { get; }

6
framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs

@ -10,7 +10,11 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundWorkers.Quartz;
[Dependency(ReplaceServices = true)]
public class QuartzDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerManager, ISingletonDependency
public class QuartzDynamicBackgroundWorkerManager :
IDynamicBackgroundWorkerManager,
ISupportsRuntimeRegistration,
ISupportsCronScheduling,
ISingletonDependency
{
public const string DynamicWorkerNameKey = "AbpDynamicWorkerName";

17
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs

@ -10,7 +10,10 @@ using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundWorkers;
public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerManager, ISingletonDependency
public class DefaultDynamicBackgroundWorkerManager :
IDynamicBackgroundWorkerManager,
ISupportsRuntimeRegistration,
ISingletonDependency
{
protected IServiceProvider ServiceProvider { get; }
public ILogger<DefaultDynamicBackgroundWorkerManager> Logger { get; set; }
@ -39,11 +42,11 @@ public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan
schedule.Validate();
if (schedule.Period == null)
if (!schedule.CronExpression.IsNullOrWhiteSpace())
{
throw new AbpException(
$"The default in-memory background worker manager does not support CronExpression without Period for dynamic worker '{workerName}'. " +
"Please set Period, or use a scheduler-backed provider (Hangfire, Quartz, TickerQ).");
$"The default in-memory background worker manager does not support CronExpression for dynamic worker '{workerName}'. " +
"Please clear CronExpression and use Period-based scheduling, or use a scheduler-backed provider (Hangfire or Quartz).");
}
await _semaphore.WaitAsync(cancellationToken);
@ -102,11 +105,11 @@ public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan
schedule.Validate();
if (schedule.Period == null)
if (!schedule.CronExpression.IsNullOrWhiteSpace())
{
throw new AbpException(
$"The default in-memory background worker manager does not support CronExpression without Period for dynamic worker '{workerName}'. " +
"Please set Period, or use a scheduler-backed provider (Hangfire, Quartz, TickerQ).");
$"The default in-memory background worker manager does not support CronExpression for dynamic worker '{workerName}'. " +
"Please clear CronExpression and use Period-based scheduling, or use a scheduler-backed provider (Hangfire or Quartz).");
}
await _semaphore.WaitAsync(cancellationToken);

6
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs

@ -6,6 +6,12 @@ namespace Volo.Abp.BackgroundWorkers;
/// <summary>
/// Manages dynamic background workers that are registered at runtime
/// without requiring a strongly-typed worker class.
/// <para>
/// Implementations may differ in capabilities. Check <see cref="ISupportsRuntimeRegistration"/>
/// before calling <see cref="AddAsync"/> / <see cref="RemoveAsync"/> / <see cref="UpdateScheduleAsync"/>,
/// and <see cref="ISupportsCronScheduling"/> before passing
/// <see cref="DynamicBackgroundWorkerSchedule.CronExpression"/>.
/// </para>
/// </summary>
public interface IDynamicBackgroundWorkerManager
{

8
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/ISupportsCronScheduling.cs

@ -0,0 +1,8 @@
namespace Volo.Abp.BackgroundWorkers;
/// <summary>
/// Marks a dynamic background worker manager that supports cron-based scheduling.
/// </summary>
public interface ISupportsCronScheduling
{
}

8
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/ISupportsRuntimeRegistration.cs

@ -0,0 +1,8 @@
namespace Volo.Abp.BackgroundWorkers;
/// <summary>
/// Marks a dynamic background worker manager that supports registering workers at runtime.
/// </summary>
public interface ISupportsRuntimeRegistration
{
}

2
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs

@ -1,10 +1,12 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundWorkers;
[DisableConventionalRegistration]
public class InMemoryDynamicBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
{
public string WorkerName { get; }

20
framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker.cs

@ -11,15 +11,21 @@ namespace Volo.Abp.Features;
public class RequireFeaturesSimpleBatchStateChecker<TState> : SimpleBatchStateCheckerBase<TState>
where TState : IHasSimpleStateCheckers<TState>
{
public static RequireFeaturesSimpleBatchStateChecker<TState> Current => _current.Value!;
private static readonly AsyncLocal<RequireFeaturesSimpleBatchStateChecker<TState>> _current = new();
private readonly List<RequireFeaturesSimpleBatchStateCheckerModel<TState>> _models;
static RequireFeaturesSimpleBatchStateChecker()
public static RequireFeaturesSimpleBatchStateChecker<TState> Current
{
_current.Value = new RequireFeaturesSimpleBatchStateChecker<TState>();
get
{
if (_current.Value == null)
{
_current.Value = new RequireFeaturesSimpleBatchStateChecker<TState>();
}
return _current.Value;
}
}
private static readonly AsyncLocal<RequireFeaturesSimpleBatchStateChecker<TState>?> _current = new();
private readonly List<RequireFeaturesSimpleBatchStateCheckerModel<TState>> _models;
public RequireFeaturesSimpleBatchStateChecker()
{

14
framework/src/Volo.Abp.MudBlazorUI/AbpMudCrudPageBase.cs

@ -375,7 +375,7 @@ public abstract class AbpMudCrudPageBase<
if (_createDialog != null)
{
await _createDialog.ShowAsync();
await InvokeAsync(() => _createDialog.ShowAsync());
}
}
catch (Exception ex)
@ -384,13 +384,14 @@ public abstract class AbpMudCrudPageBase<
}
}
protected virtual async Task CloseCreateDialogAsync()
protected virtual Task CloseCreateDialogAsync()
{
NewEntity = new TCreateViewModel();
if (_createDialog != null)
{
await _createDialog.CloseAsync();
return InvokeAsync(() => _createDialog.CloseAsync());
}
return Task.CompletedTask;
}
protected virtual async Task OpenEditDialogAsync(TListViewModel entity)
@ -406,7 +407,7 @@ public abstract class AbpMudCrudPageBase<
if (_editDialog != null)
{
await _editDialog.ShowAsync();
await InvokeAsync(() => _editDialog.ShowAsync());
}
}
catch (Exception ex)
@ -440,12 +441,13 @@ public abstract class AbpMudCrudPageBase<
return ObjectMapper.Map<TUpdateViewModel, TUpdateInput>(updateViewModel);
}
protected virtual async Task CloseEditDialogAsync()
protected virtual Task CloseEditDialogAsync()
{
if (_editDialog != null)
{
await _editDialog.CloseAsync();
return InvokeAsync(() => _editDialog.CloseAsync());
}
return Task.CompletedTask;
}
protected virtual async Task CreateEntityAsync()

2
framework/src/Volo.Abp.MudBlazorUI/Components/AbpMudExtensibleDataGrid.razor.cs

@ -61,7 +61,7 @@ public partial class AbpMudExtensibleDataGrid<TItem> : ComponentBase
{
if (_dataGrid != null && ServerData != null)
{
await _dataGrid.ReloadServerData();
await InvokeAsync(() => _dataGrid.ReloadServerData());
}
}

2
framework/src/Volo.Abp.MudBlazorUI/Components/MudEntityAction.razor.cs

@ -69,7 +69,7 @@ public partial class MudEntityAction<TItem> : ComponentBase
{
if (await UiMessageService.Confirm(ConfirmationMessage()))
{
await InvokeAsync(async () => await Clicked.InvokeAsync());
await InvokeAsync(() => Clicked.InvokeAsync());
}
}
else

2
framework/src/Volo.Abp.MudBlazorUI/Components/ObjectExtending/MudLookupExtensionProperty.razor.cs

@ -58,7 +58,7 @@ public partial class MudLookupExtensionProperty<TEntity, TResourceType>
if (firstRender)
{
LookupItems = await GetLookupItemsAsync(string.Empty);
StateHasChanged();
await InvokeAsync(StateHasChanged);
}
}

194
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Bootstrap/TagHelpers/Form/AbpInputTagHelperService_Tests.cs

@ -1,9 +1,14 @@
#nullable enable
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.Extensions.Localization;
using Shouldly;
using Xunit;
@ -45,6 +50,109 @@ public class AbpInputTagHelperService_Tests
service.LastGroupHtml.ShouldContain("mb-3");
}
[Fact]
public async Task Info_text_should_be_rendered_as_div_with_form_text_class()
{
var service = new TestAbpInputTagHelperServiceForInfo();
var tagHelper = new AbpInputTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastGroupHtml.ShouldContain("<div class=\"form-text\"");
service.LastGroupHtml.ShouldContain("id=\"TestInputInfoText\"");
service.LastGroupHtml.ShouldNotContain("<small");
}
[Fact]
public async Task Info_text_should_set_aria_describedby_on_input()
{
var service = new TestAbpInputTagHelperServiceForInfo();
var tagHelper = new AbpInputTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastInputTag.ShouldNotBeNull();
service.LastInputTag!.Attributes["aria-describedby"].Value.ToString().ShouldBe("TestInputInfoText");
service.LastGroupHtml.ShouldContain("aria-describedby=\"TestInputInfoText\"");
}
[Fact]
public async Task Info_text_should_skip_id_and_aria_describedby_when_input_has_no_id()
{
var service = new TestAbpInputTagHelperServiceForInfo(inputId: null);
var tagHelper = new AbpInputTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastGroupHtml.ShouldContain("<div class=\"form-text\"");
service.LastGroupHtml.ShouldContain("Description");
service.LastGroupHtml.ShouldNotContain("id=\"InfoText\"");
service.LastGroupHtml.ShouldNotContain("aria-describedby=\"InfoText\"");
service.LastInputTag.ShouldNotBeNull();
service.LastInputTag!.Attributes.ContainsName("aria-describedby").ShouldBeFalse();
}
[Fact]
public async Task Aria_describedby_should_preserve_existing_value_set_by_caller()
{
var service = new TestAbpInputTagHelperServiceForInfo(existingAriaDescribedby: "custom-id");
var tagHelper = new AbpInputTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastInputTag.ShouldNotBeNull();
service.LastInputTag!.Attributes["aria-describedby"].Value.ToString().ShouldBe("custom-id TestInputInfoText");
service.LastGroupHtml.ShouldContain("aria-describedby=\"custom-id TestInputInfoText\"");
}
[Fact]
public async Task InputInfoText_attribute_should_render_info_text_with_single_aria_describedby()
{
var service = new TestAbpInputTagHelperServiceForInfo();
var tagHelper = new AbpInputTagHelper(service)
{
AspFor = CreateModelExpressionWithInputInfoText()
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastGroupHtml.ShouldContain("<div class=\"form-text\"");
service.LastGroupHtml.ShouldContain("Description from attribute");
service.LastGroupHtml.ShouldNotContain("<small");
service.LastInputTag.ShouldNotBeNull();
var ariaDescribedby = service.LastInputTag!.Attributes.Where(a => a.Name == "aria-describedby").ToList();
ariaDescribedby.Count.ShouldBe(1);
ariaDescribedby[0].Value.ToString().ShouldBe("TestInputInfoText");
}
private static TagHelperContext CreateContext()
{
return new TagHelperContext(
@ -69,6 +177,21 @@ public class AbpInputTagHelperService_Tests
metadataProvider.GetModelExplorerForType(typeof(string), null));
}
private static ModelExpression CreateModelExpressionWithInputInfoText()
{
var metadataProvider = new EmptyModelMetadataProvider();
var modelExplorer = metadataProvider
.GetModelExplorerForType(typeof(TestModelWithInputInfoText), null)
.GetExplorerForProperty(nameof(TestModelWithInputInfoText.TestInput));
return new ModelExpression(nameof(TestModelWithInputInfoText.TestInput), modelExplorer);
}
private class TestModelWithInputInfoText
{
[InputInfoText("Description from attribute")]
public string TestInput { get; set; } = string.Empty;
}
private sealed class TestAbpInputTagHelperService : AbpInputTagHelperService
{
private readonly string _inputTypeName;
@ -119,4 +242,75 @@ public class AbpInputTagHelperService_Tests
suppress = false;
}
}
private sealed class TestAbpInputTagHelperServiceForInfo : AbpInputTagHelperService
{
private readonly string? _inputId;
private readonly string? _existingAriaDescribedby;
public string LastGroupHtml { get; private set; } = string.Empty;
public TagHelperOutput? LastInputTag { get; private set; }
public TestAbpInputTagHelperServiceForInfo(string? inputId = "TestInput", string? existingAriaDescribedby = null)
: base(null!, HtmlEncoder.Default, new FakeTagHelperLocalizer())
{
_inputId = inputId;
_existingAriaDescribedby = existingAriaDescribedby;
}
protected override Task<(TagHelperOutput, bool)> GetInputTagHelperOutputAsync(TagHelperContext context, TagHelperOutput output)
{
var attributes = new TagHelperAttributeList
{
{ "type", "text" },
{ "class", "form-control" }
};
if (!string.IsNullOrEmpty(_inputId))
{
attributes.Add("id", _inputId);
}
if (!string.IsNullOrEmpty(_existingAriaDescribedby))
{
attributes.Add("aria-describedby", _existingAriaDescribedby);
}
LastInputTag = new TagHelperOutput(
"input",
attributes,
(_, _) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()))
{
TagMode = TagMode.SelfClosing
};
AddInfoTextId(LastInputTag);
return Task.FromResult((LastInputTag, false));
}
protected override Task<string> GetLabelAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag, bool isCheckbox)
{
return Task.FromResult(string.Empty);
}
protected override Task<string> GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag)
{
return Task.FromResult(string.Empty);
}
protected override void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress)
{
LastGroupHtml = html;
suppress = false;
}
}
private sealed class FakeTagHelperLocalizer : IAbpTagHelperLocalizer
{
public string GetLocalizedText(string text, ModelExplorer explorer) => text;
public IStringLocalizer? GetLocalizerOrNull(ModelExplorer explorer) => null;
public IStringLocalizer? GetLocalizerOrNull(Assembly assembly) => null;
}
}

246
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Bootstrap/TagHelpers/Form/AbpSelectTagHelperService_Tests.cs

@ -0,0 +1,246 @@
#nullable enable
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.Extensions.Localization;
using Shouldly;
using Xunit;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
public class AbpSelectTagHelperService_Tests
{
[Fact]
public async Task Info_text_should_be_rendered_as_div_with_form_text_class()
{
var service = new TestAbpSelectTagHelperService();
var tagHelper = new AbpSelectTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastGroupHtml.ShouldContain("<div class=\"form-text\"");
service.LastGroupHtml.ShouldContain("id=\"TestSelectInfoText\"");
service.LastGroupHtml.ShouldNotContain("<small");
}
[Fact]
public async Task Info_text_should_set_aria_describedby_on_select()
{
var service = new TestAbpSelectTagHelperService();
var tagHelper = new AbpSelectTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastSelectTag.ShouldNotBeNull();
service.LastSelectTag!.Attributes.ContainsName("aria-describedby").ShouldBeTrue();
service.LastSelectTag.Attributes["aria-describedby"].Value.ToString().ShouldBe("TestSelectInfoText");
service.LastGroupHtml.ShouldContain("aria-describedby=\"TestSelectInfoText\"");
}
[Fact]
public async Task Info_text_should_skip_id_and_aria_describedby_when_select_has_no_id()
{
var service = new TestAbpSelectTagHelperService(selectId: null);
var tagHelper = new AbpSelectTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastGroupHtml.ShouldContain("<div class=\"form-text\"");
service.LastGroupHtml.ShouldContain("Description");
service.LastGroupHtml.ShouldNotContain("id=\"InfoText\"");
service.LastGroupHtml.ShouldNotContain("aria-describedby=\"InfoText\"");
service.LastSelectTag.ShouldNotBeNull();
service.LastSelectTag!.Attributes.ContainsName("aria-describedby").ShouldBeFalse();
}
[Fact]
public async Task Aria_describedby_should_preserve_existing_value_set_by_caller()
{
var service = new TestAbpSelectTagHelperService(existingAriaDescribedby: "custom-id");
var tagHelper = new AbpSelectTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastSelectTag.ShouldNotBeNull();
service.LastSelectTag!.Attributes["aria-describedby"].Value.ToString().ShouldBe("custom-id TestSelectInfoText");
service.LastGroupHtml.ShouldContain("aria-describedby=\"custom-id TestSelectInfoText\"");
}
[Fact]
public async Task Aria_describedby_should_split_on_html_whitespace_separators()
{
var service = new TestAbpSelectTagHelperService(existingAriaDescribedby: "id1\tid2");
var tagHelper = new AbpSelectTagHelper(service)
{
AspFor = CreateModelExpression(),
InfoText = "Description"
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastSelectTag.ShouldNotBeNull();
service.LastSelectTag!.Attributes["aria-describedby"].Value.ToString().ShouldBe("id1\tid2 TestSelectInfoText");
}
[Fact]
public async Task InputInfoText_attribute_should_render_info_text_with_single_aria_describedby()
{
var service = new TestAbpSelectTagHelperService();
var tagHelper = new AbpSelectTagHelper(service)
{
AspFor = CreateModelExpressionWithInputInfoText()
};
var output = CreateOutput();
await tagHelper.ProcessAsync(CreateContext(), output);
service.LastGroupHtml.ShouldContain("<div class=\"form-text\"");
service.LastGroupHtml.ShouldContain("Description from attribute");
service.LastGroupHtml.ShouldNotContain("<small");
service.LastSelectTag.ShouldNotBeNull();
var ariaDescribedby = service.LastSelectTag!.Attributes.Where(a => a.Name == "aria-describedby").ToList();
ariaDescribedby.Count.ShouldBe(1);
ariaDescribedby[0].Value.ToString().ShouldBe("TestSelectInfoText");
}
private static TagHelperContext CreateContext()
{
return new TagHelperContext(
new TagHelperAttributeList(),
new Dictionary<object, object>(),
"test");
}
private static TagHelperOutput CreateOutput()
{
return new TagHelperOutput(
"abp-select",
new TagHelperAttributeList(),
(_, _) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
}
private static ModelExpression CreateModelExpression()
{
var metadataProvider = new EmptyModelMetadataProvider();
return new ModelExpression(
"TestSelect",
metadataProvider.GetModelExplorerForType(typeof(string), null));
}
private static ModelExpression CreateModelExpressionWithInputInfoText()
{
var metadataProvider = new EmptyModelMetadataProvider();
var modelExplorer = metadataProvider
.GetModelExplorerForType(typeof(TestModelWithInputInfoText), null)
.GetExplorerForProperty(nameof(TestModelWithInputInfoText.TestSelect));
return new ModelExpression(nameof(TestModelWithInputInfoText.TestSelect), modelExplorer);
}
private class TestModelWithInputInfoText
{
[InputInfoText("Description from attribute")]
public string TestSelect { get; set; } = string.Empty;
}
private sealed class TestAbpSelectTagHelperService : AbpSelectTagHelperService
{
private readonly string? _selectId;
private readonly string? _existingAriaDescribedby;
public string LastGroupHtml { get; private set; } = string.Empty;
public TagHelperOutput? LastSelectTag { get; private set; }
public TestAbpSelectTagHelperService(string? selectId = "TestSelect", string? existingAriaDescribedby = null)
: base(null!, HtmlEncoder.Default, new FakeTagHelperLocalizer(), null!, null!)
{
_selectId = selectId;
_existingAriaDescribedby = existingAriaDescribedby;
}
protected override Task<TagHelperOutput> GetSelectTagAsync(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent)
{
var attributes = new TagHelperAttributeList();
if (!string.IsNullOrEmpty(_selectId))
{
attributes.Add("id", _selectId);
}
if (!string.IsNullOrEmpty(_existingAriaDescribedby))
{
attributes.Add("aria-describedby", _existingAriaDescribedby);
}
LastSelectTag = new TagHelperOutput(
"select",
attributes,
(_, _) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()))
{
TagMode = TagMode.StartTagAndEndTag
};
AddInfoTextId(LastSelectTag);
return Task.FromResult(LastSelectTag);
}
protected override Task<string> GetLabelAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput selectTag)
{
return Task.FromResult(string.Empty);
}
protected override Task<string> GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput selectTag)
{
return Task.FromResult(string.Empty);
}
protected override void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress)
{
LastGroupHtml = html;
suppress = false;
}
}
private sealed class FakeTagHelperLocalizer : IAbpTagHelperLocalizer
{
public string GetLocalizedText(string text, ModelExplorer explorer) => text;
public IStringLocalizer? GetLocalizerOrNull(ModelExplorer explorer) => null;
public IStringLocalizer? GetLocalizerOrNull(Assembly assembly) => null;
}
}

1
framework/test/Volo.Abp.Authorization.Tests/Volo.Abp.Authorization.Tests.csproj

@ -13,6 +13,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\src\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj" />
<ProjectReference Include="..\..\src\Volo.Abp.Features\Volo.Abp.Features.csproj" />
<ProjectReference Include="..\AbpTestBase\AbpTestBase.csproj" />
<ProjectReference Include="..\..\src\Volo.Abp.Authorization\Volo.Abp.Authorization.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />

2
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs

@ -5,6 +5,7 @@ using Volo.Abp.Authorization.TestServices.Resources;
using Volo.Abp.Autofac;
using Volo.Abp.DynamicProxy;
using Volo.Abp.ExceptionHandling;
using Volo.Abp.Features;
using Volo.Abp.Modularity;
namespace Volo.Abp.Authorization;
@ -12,6 +13,7 @@ namespace Volo.Abp.Authorization;
[DependsOn(typeof(AbpAutofacModule))]
[DependsOn(typeof(AbpAuthorizationModule))]
[DependsOn(typeof(AbpExceptionHandlingModule))]
[DependsOn(typeof(AbpFeaturesModule))]
public class AbpAuthorizationTestModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)

3
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/Authorization_Tests.cs

@ -69,7 +69,8 @@ public class Authorization_Tests : AuthorizationTestBase
[Fact]
public async Task Should_Permission_Definition_GetGroup()
{
(await _permissionDefinitionManager.GetGroupsAsync()).Count.ShouldBe(1);
var groups = await _permissionDefinitionManager.GetGroupsAsync();
groups.ShouldContain(g => g.Name == "TestGroup");
}
[Fact]

26
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/RequirePermissionsSimpleBatchStateChecker_Tests.cs

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Authorization.Permissions;
@ -56,6 +57,21 @@ public class RequirePermissionsSimpleBatchStateChecker_Tests : AuthorizationTest
result[myStateEntities[3]].ShouldBeTrue();
}
[Fact]
public async Task Current_Should_Not_Be_Null_In_Fresh_ExecutionContext()
{
_ = RequirePermissionsSimpleBatchStateChecker<MyStateEntity3>.Current;
Task<RequirePermissionsSimpleBatchStateChecker<MyStateEntity3>> task;
using (ExecutionContext.SuppressFlow())
{
task = Task.Run(() => RequirePermissionsSimpleBatchStateChecker<MyStateEntity3>.Current);
}
var current = await task;
current.ShouldNotBeNull();
}
class MyStateEntity : IHasSimpleStateCheckers<MyStateEntity>
{
public List<ISimpleStateChecker<MyStateEntity>> StateCheckers { get; }
@ -75,4 +91,14 @@ public class RequirePermissionsSimpleBatchStateChecker_Tests : AuthorizationTest
StateCheckers = new List<ISimpleStateChecker<MyStateEntity2>>();
}
}
class MyStateEntity3 : IHasSimpleStateCheckers<MyStateEntity3>
{
public List<ISimpleStateChecker<MyStateEntity3>> StateCheckers { get; }
public MyStateEntity3()
{
StateCheckers = new List<ISimpleStateChecker<MyStateEntity3>>();
}
}
}

38
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/StaticPermissionDefinitionStore_Tests.cs

@ -1,7 +1,10 @@
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Authorization.TestServices.Resources;
using Volo.Abp.StaticDefinitions;
using Xunit;
namespace Volo.Abp.Authorization;
@ -84,4 +87,37 @@ public class StaticPermissionDefinitionStore_Tests : AuthorizationTestBase
permissions.ShouldContain(x =>
x.Name == "MyResourcePermission7" && x.ResourceName == TestEntityResource2.ResourceName);
}
[Fact]
public async Task Should_Rebuild_Definitions_In_Fresh_ExecutionContext_After_Cache_Clear()
{
var groupCache = GetRequiredService<IStaticDefinitionCache<PermissionGroupDefinition,
(Dictionary<string, PermissionGroupDefinition>, List<PermissionDefinition>)>>();
var definitionCache = GetRequiredService<IStaticDefinitionCache<PermissionDefinition,
Dictionary<string, PermissionDefinition>>>();
await groupCache.ClearAsync();
await definitionCache.ClearAsync();
// Touch the type initializer (if any) on the test ExecutionContext first, mirroring
// the production scenario where startup pre-warms it on a different ExecutionContext.
_ = await _store.GetOrNullAsync("FeatureGatedPermission");
await groupCache.ClearAsync();
await definitionCache.ClearAsync();
PermissionDefinition permission = null;
Task task;
using (ExecutionContext.SuppressFlow())
{
task = Task.Run(async () =>
{
permission = await _store.GetOrNullAsync("FeatureGatedPermission");
});
}
await task;
permission.ShouldNotBeNull();
permission.Name.ShouldBe("FeatureGatedPermission");
}
}

15
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/FeatureGatedTestPermissionDefinitionProvider.cs

@ -0,0 +1,15 @@
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Features;
namespace Volo.Abp.Authorization.TestServices;
public class FeatureGatedTestPermissionDefinitionProvider : PermissionDefinitionProvider
{
public override void Define(IPermissionDefinitionContext context)
{
var group = context.AddGroup("FeatureGatedTestGroup");
group.AddPermission("FeatureGatedPermission")
.RequireFeatures("FeatureGatedTestFeature");
}
}

51
framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManager_Tests.cs

@ -5,6 +5,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.BackgroundWorkers;
using Xunit;
@ -20,6 +21,13 @@ public class DynamicBackgroundWorkerManager_Tests : BackgroundJobsTestBase
_dynamicWorkerManager = GetRequiredService<IDynamicBackgroundWorkerManager>();
}
[Fact]
public void Should_Report_Provider_Capabilities_Using_Marker_Interfaces()
{
(_dynamicWorkerManager is ISupportsRuntimeRegistration).ShouldBeTrue();
(_dynamicWorkerManager is ISupportsCronScheduling).ShouldBeFalse();
}
[Fact]
public async Task Should_Register_Dynamic_Worker()
{
@ -235,6 +243,49 @@ public class DynamicBackgroundWorkerManager_Tests : BackgroundJobsTestBase
});
}
[Fact]
public async Task Should_Throw_When_CronExpression_Is_Set()
{
var workerName = "dynamic-worker-" + Guid.NewGuid();
await Assert.ThrowsAsync<AbpException>(async () =>
{
await _dynamicWorkerManager.AddAsync(
workerName,
new DynamicBackgroundWorkerSchedule
{
Period = 1000,
CronExpression = "0 */5 * * * *"
},
(_, _) => Task.CompletedTask
);
});
}
[Fact]
public async Task Should_Throw_When_CronExpression_Is_Set_On_UpdateSchedule()
{
var workerName = "dynamic-worker-" + Guid.NewGuid();
await _dynamicWorkerManager.AddAsync(
workerName,
new DynamicBackgroundWorkerSchedule { Period = 1000 },
(_, _) => Task.CompletedTask
);
await Assert.ThrowsAsync<AbpException>(async () =>
{
await _dynamicWorkerManager.UpdateScheduleAsync(
workerName,
new DynamicBackgroundWorkerSchedule
{
Period = 1000,
CronExpression = "0 */5 * * * *"
}
);
});
}
[Fact]
public async Task Should_Continue_Running_After_Handler_Throws_Exception()
{

37
framework/test/Volo.Abp.BackgroundJobs.Tests/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker_Registration_Tests.cs

@ -0,0 +1,37 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Shouldly;
using Xunit;
namespace Volo.Abp.BackgroundWorkers;
public class InMemoryDynamicBackgroundWorker_Registration_Tests
{
// Reproduces the original failure: ASP.NET Core in Development enables ValidateOnBuild,
// and InMemoryDynamicBackgroundWorker has a `string workerName` constructor parameter
// that DI cannot resolve. Without [DisableConventionalRegistration] this throws:
// Unable to resolve service for type 'System.String' while attempting to activate
// 'Volo.Abp.BackgroundWorkers.InMemoryDynamicBackgroundWorker'.
[Fact]
public async Task BuildServiceProvider_With_ValidateOnBuild_Should_Not_Throw()
{
using var application = await AbpApplicationFactory.CreateAsync<AbpBackgroundWorkersModule>();
var act = () => application.Services.BuildServiceProvider(
new ServiceProviderOptions { ValidateOnBuild = true });
act.ShouldNotThrow();
}
// Verifies the fix: InMemoryDynamicBackgroundWorker is created on demand by
// DefaultDynamicBackgroundWorkerManager (`new InMemoryDynamicBackgroundWorker(...)`)
// and must stay out of the conventional registration loop.
[Fact]
public async Task InMemoryDynamicBackgroundWorker_Should_Not_Be_Registered_As_Service()
{
using var application = await AbpApplicationFactory.CreateAsync<AbpBackgroundWorkersModule>();
application.Services.ShouldNotContain(d => d.ServiceType == typeof(InMemoryDynamicBackgroundWorker));
}
}

26
framework/test/Volo.Abp.Features.Tests/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker_Tests.cs

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.MultiTenancy;
@ -84,6 +85,21 @@ public class RequireFeaturesSimpleBatchStateChecker_Tests : FeatureTestBase
}
}
[Fact]
public async Task Current_Should_Not_Be_Null_In_Fresh_ExecutionContext()
{
_ = RequireFeaturesSimpleBatchStateChecker<MyStateEntity3>.Current;
Task<RequireFeaturesSimpleBatchStateChecker<MyStateEntity3>> task;
using (ExecutionContext.SuppressFlow())
{
task = Task.Run(() => RequireFeaturesSimpleBatchStateChecker<MyStateEntity3>.Current);
}
var current = await task;
current.ShouldNotBeNull();
}
class MyStateEntity : IHasSimpleStateCheckers<MyStateEntity>
{
public List<ISimpleStateChecker<MyStateEntity>> StateCheckers { get; }
@ -103,4 +119,14 @@ public class RequireFeaturesSimpleBatchStateChecker_Tests : FeatureTestBase
StateCheckers = new List<ISimpleStateChecker<MyStateEntity2>>();
}
}
class MyStateEntity3 : IHasSimpleStateCheckers<MyStateEntity3>
{
public List<ISimpleStateChecker<MyStateEntity3>> StateCheckers { get; }
public MyStateEntity3()
{
StateCheckers = new List<ISimpleStateChecker<MyStateEntity3>>();
}
}
}

6
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json

@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.0-rc.1",
"@abp/prismjs": "~10.4.0-rc.1",
"@abp/highlight.js": "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.0-rc.2",
"@abp/prismjs": "~10.4.0-rc.2",
"@abp/highlight.js": "~10.4.0-rc.2"
}
}

266
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock

@ -2,204 +2,204 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.1.tgz#f1b9435fbacdd2515450a44030f63e1ad4d80353"
integrity sha512-aMer6rFiy09n6fFy48DDEdvhxKAS27GarFH3o/z52qyhYKyc+NKdcxaKyvpXXYmuQE0l1Ss5EIILyR/BJdJjuA==
"@abp/clipboard@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.2.tgz#6cdb71282ca31f0aeb902d3188f8b5a626934970"
integrity sha512-9eWL6tqK4uZTdaRBx0UBKqWR3A6jXNS91uiNmRIce4gPYao++lpx3hlQtq4WttvTs6QD3P7OBlSy4pjBdggNIw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
clipboard "^2.0.11"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/highlight.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0-rc.1.tgz#f194b3997be014ccea5bed87afeb0349f9eee247"
integrity sha512-Zz4fzZWrHJVZhnOsPjrb/K+i5/WXqXQIQWrO6gLuCD0KK7SZxAplpkD2N6G96RDJaD6DwBrcb+h39F7AH5wcjw==
"@abp/highlight.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0-rc.2.tgz#0e98ae1dd3b14a77794d95ab707008c629c28c05"
integrity sha512-ZoZPvC3RDFktIZb8UjiapKkYLioT4jANR70P6dWosXMUteHu9kfAllXvyMHk9/DQ0A2y7bqTh5CfmxRh8WSguQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@highlightjs/cdn-assets" "~11.11.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.1.tgz#0f221d1d1602903da4012651727589b57b8adb68"
integrity sha512-CWoALCQprneoOmtoqHQK4iOKS4NUGsoHRcUhryzb8EqawXNRD2BXdgVwA/fDiwaVD2qn5EkcEIgOzchWMn8I8w==
"@abp/prismjs@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.2.tgz#a17284bd233b048f6be7bf31a7a7fc6af2a63057"
integrity sha512-lqIT3RUvhHNyy/DcTi/w+tXs02NT1yhY7b1pzm+mOWH9wBEOpEMtqFTHfX/oQpj8VRV3Ye/NDpWAZd11+4EMzQ==
dependencies:
"@abp/clipboard" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.1"
"@abp/clipboard" "~10.4.0-rc.2"
"@abp/core" "~10.4.0-rc.2"
prismjs "^1.30.0"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

4
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json

@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.1",
"@abp/prismjs": "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.2",
"@abp/prismjs": "~10.4.0-rc.2"
},
"devDependencies": {}
}

270
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock

@ -2,203 +2,203 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.1.tgz#18fa308c73a90f05dc460f85a0ec154f22706efb"
integrity sha512-AVl2q3wZ9erurV+FG5HiubOI1tU67ParPrvXPIbEbaQL8a6xJ1Qgyok8F0mpcesOqDjOIuEcA+EEjoylY2PSdw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.2.tgz#77d3ea3f4cccd0cda7c9cf7c4ca3e136e106e385"
integrity sha512-+zvkAFm1D1SXdZGdKjibn1yqIAYp8xNYccnipPrc5b+4xxvH8QaihymT4Z/g/XPT484wdDk3mq8G1Z3COPxPgg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.1.tgz#f1b9435fbacdd2515450a44030f63e1ad4d80353"
integrity sha512-aMer6rFiy09n6fFy48DDEdvhxKAS27GarFH3o/z52qyhYKyc+NKdcxaKyvpXXYmuQE0l1Ss5EIILyR/BJdJjuA==
"@abp/clipboard@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.2.tgz#6cdb71282ca31f0aeb902d3188f8b5a626934970"
integrity sha512-9eWL6tqK4uZTdaRBx0UBKqWR3A6jXNS91uiNmRIce4gPYao++lpx3hlQtq4WttvTs6QD3P7OBlSy4pjBdggNIw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
clipboard "^2.0.11"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.1.tgz#0f221d1d1602903da4012651727589b57b8adb68"
integrity sha512-CWoALCQprneoOmtoqHQK4iOKS4NUGsoHRcUhryzb8EqawXNRD2BXdgVwA/fDiwaVD2qn5EkcEIgOzchWMn8I8w==
"@abp/prismjs@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.2.tgz#a17284bd233b048f6be7bf31a7a7fc6af2a63057"
integrity sha512-lqIT3RUvhHNyy/DcTi/w+tXs02NT1yhY7b1pzm+mOWH9wBEOpEMtqFTHfX/oQpj8VRV3Ye/NDpWAZd11+4EMzQ==
dependencies:
"@abp/clipboard" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.1"
"@abp/clipboard" "~10.4.0-rc.2"
"@abp/core" "~10.4.0-rc.2"
prismjs "^1.30.0"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

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

@ -3,7 +3,7 @@
"name": "volo.blogtestapp",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.1",
"@abp/blogging": "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.2",
"@abp/blogging": "~10.4.0-rc.2"
}
}

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

@ -2,229 +2,229 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.1.tgz#18fa308c73a90f05dc460f85a0ec154f22706efb"
integrity sha512-AVl2q3wZ9erurV+FG5HiubOI1tU67ParPrvXPIbEbaQL8a6xJ1Qgyok8F0mpcesOqDjOIuEcA+EEjoylY2PSdw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.2.tgz#77d3ea3f4cccd0cda7c9cf7c4ca3e136e106e385"
integrity sha512-+zvkAFm1D1SXdZGdKjibn1yqIAYp8xNYccnipPrc5b+4xxvH8QaihymT4Z/g/XPT484wdDk3mq8G1Z3COPxPgg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/blogging@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.4.0-rc.1.tgz#3bbf9d064de42a2eabde3b4bca25b62d8ae0d00c"
integrity sha512-Gtd/MjUJG5ptgUBYEJJhLCg2lsef1rFDviBdQ/QwKKfAZ/51mf9Nc3rgj3flDwr7RzDQGKEWou0lCuJpQyNw+A==
"@abp/blogging@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.4.0-rc.2.tgz#634d8fd72242a0449b48a76c586e4bb2b5e9451c"
integrity sha512-MfLzWqnxmfs0WRKTu+49zmOrVo4a7OoVxRq8Exj7uB2rJVGYeSLbCNU/Ty7FTPjW/cszadMJUi2tssHXO7tQkg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/owl.carousel" "~10.4.0-rc.1"
"@abp/prismjs" "~10.4.0-rc.1"
"@abp/tui-editor" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/owl.carousel" "~10.4.0-rc.2"
"@abp/prismjs" "~10.4.0-rc.2"
"@abp/tui-editor" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.1.tgz#f1b9435fbacdd2515450a44030f63e1ad4d80353"
integrity sha512-aMer6rFiy09n6fFy48DDEdvhxKAS27GarFH3o/z52qyhYKyc+NKdcxaKyvpXXYmuQE0l1Ss5EIILyR/BJdJjuA==
"@abp/clipboard@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.2.tgz#6cdb71282ca31f0aeb902d3188f8b5a626934970"
integrity sha512-9eWL6tqK4uZTdaRBx0UBKqWR3A6jXNS91uiNmRIce4gPYao++lpx3hlQtq4WttvTs6QD3P7OBlSy4pjBdggNIw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
clipboard "^2.0.11"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/owl.carousel@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.4.0-rc.1.tgz#3ece87d55c36752b6a12534cfc4ecb61fa1f9c4d"
integrity sha512-/ZO00Rw3zl7z+rj+PtMyazqFTcLzRumVn1Ar4dQpJkUk5luMBZzdRktpPzcO1HNCGIT01rp5CRQ3btATS0tzWA==
"@abp/owl.carousel@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.4.0-rc.2.tgz#57afe9137ccd24e7930050e722034348d5cec587"
integrity sha512-JFPEtPoAoKgqloRYbtcAtLbL8Cq9eR8EjYDEGGRRco5Q1kj25849CduE5woFLD2op0HbBQR0esYenPmYojZ6Dw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
owl.carousel "^2.3.4"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.1.tgz#0f221d1d1602903da4012651727589b57b8adb68"
integrity sha512-CWoALCQprneoOmtoqHQK4iOKS4NUGsoHRcUhryzb8EqawXNRD2BXdgVwA/fDiwaVD2qn5EkcEIgOzchWMn8I8w==
"@abp/prismjs@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.2.tgz#a17284bd233b048f6be7bf31a7a7fc6af2a63057"
integrity sha512-lqIT3RUvhHNyy/DcTi/w+tXs02NT1yhY7b1pzm+mOWH9wBEOpEMtqFTHfX/oQpj8VRV3Ye/NDpWAZd11+4EMzQ==
dependencies:
"@abp/clipboard" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.1"
"@abp/clipboard" "~10.4.0-rc.2"
"@abp/core" "~10.4.0-rc.2"
prismjs "^1.30.0"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/tui-editor@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0-rc.1.tgz#b56ca2ee01f7d561a022c1b76bdd00e44742a1fb"
integrity sha512-wMtCMjOYupO4dHNqLT2qpBOoH0NGeK3zlnBmOCaVWrYCDySFLpcDhLdpNDyQXK1DZHGSbEWfPbygS50xaav/aQ==
"@abp/tui-editor@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0-rc.2.tgz#22e2fcf7f2ab02507a8f3ed159044f1d14bfd875"
integrity sha512-+xwOazOVxJTPGW+Fn+Gwwj94rzS5rCArqzPNQJ5mE87ZJ9/qK0yygiMqDgA9fomEc2vrvtXWPZYuF4/r2/PQ/g==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/prismjs" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
"@abp/prismjs" "~10.4.0-rc.2"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

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

@ -3,6 +3,6 @@
"name": "client-simulation-web",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.2"
}
}

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

@ -2,186 +2,186 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.1.tgz#18fa308c73a90f05dc460f85a0ec154f22706efb"
integrity sha512-AVl2q3wZ9erurV+FG5HiubOI1tU67ParPrvXPIbEbaQL8a6xJ1Qgyok8F0mpcesOqDjOIuEcA+EEjoylY2PSdw==
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.2.tgz#77d3ea3f4cccd0cda7c9cf7c4ca3e136e106e385"
integrity sha512-+zvkAFm1D1SXdZGdKjibn1yqIAYp8xNYccnipPrc5b+4xxvH8QaihymT4Z/g/XPT484wdDk3mq8G1Z3COPxPgg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

11
modules/cms-kit/.abpstudio/state.json

@ -1,11 +0,0 @@
{
"selectedKubernetesProfile": null,
"solutionRunner": {
"selectedProfile": null,
"targetFrameworks": [],
"applicationsStartingWithoutBuild": [],
"applicationsWithoutAutoRefreshBrowserOnRestart": [],
"applicationBatchStartStates": [],
"folderBatchStartStates": []
}
}

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

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

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

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

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

@ -3,6 +3,6 @@
"name": "my-app-identityserver",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.2"
}
}

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

@ -2,186 +2,186 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.1.tgz#18fa308c73a90f05dc460f85a0ec154f22706efb"
integrity sha512-AVl2q3wZ9erurV+FG5HiubOI1tU67ParPrvXPIbEbaQL8a6xJ1Qgyok8F0mpcesOqDjOIuEcA+EEjoylY2PSdw==
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.2.tgz#77d3ea3f4cccd0cda7c9cf7c4ca3e136e106e385"
integrity sha512-+zvkAFm1D1SXdZGdKjibn1yqIAYp8xNYccnipPrc5b+4xxvH8QaihymT4Z/g/XPT484wdDk3mq8G1Z3COPxPgg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

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

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.2"
}
}

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

@ -2,186 +2,186 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.1.tgz#18fa308c73a90f05dc460f85a0ec154f22706efb"
integrity sha512-AVl2q3wZ9erurV+FG5HiubOI1tU67ParPrvXPIbEbaQL8a6xJ1Qgyok8F0mpcesOqDjOIuEcA+EEjoylY2PSdw==
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.2.tgz#77d3ea3f4cccd0cda7c9cf7c4ca3e136e106e385"
integrity sha512-+zvkAFm1D1SXdZGdKjibn1yqIAYp8xNYccnipPrc5b+4xxvH8QaihymT4Z/g/XPT484wdDk3mq8G1Z3COPxPgg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

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

@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.1",
"@abp/cms-kit": "10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.2",
"@abp/cms-kit": "10.4.0-rc.2"
}
}

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

@ -2,294 +2,294 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.1.tgz#18fa308c73a90f05dc460f85a0ec154f22706efb"
integrity sha512-AVl2q3wZ9erurV+FG5HiubOI1tU67ParPrvXPIbEbaQL8a6xJ1Qgyok8F0mpcesOqDjOIuEcA+EEjoylY2PSdw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.2.tgz#77d3ea3f4cccd0cda7c9cf7c4ca3e136e106e385"
integrity sha512-+zvkAFm1D1SXdZGdKjibn1yqIAYp8xNYccnipPrc5b+4xxvH8QaihymT4Z/g/XPT484wdDk3mq8G1Z3COPxPgg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.1.tgz#f1b9435fbacdd2515450a44030f63e1ad4d80353"
integrity sha512-aMer6rFiy09n6fFy48DDEdvhxKAS27GarFH3o/z52qyhYKyc+NKdcxaKyvpXXYmuQE0l1Ss5EIILyR/BJdJjuA==
"@abp/clipboard@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.2.tgz#6cdb71282ca31f0aeb902d3188f8b5a626934970"
integrity sha512-9eWL6tqK4uZTdaRBx0UBKqWR3A6jXNS91uiNmRIce4gPYao++lpx3hlQtq4WttvTs6QD3P7OBlSy4pjBdggNIw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
clipboard "^2.0.11"
"@abp/cms-kit.admin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.4.0-rc.1.tgz#d59bca5c6fa4de34a09fc751a3355c0da61f4f56"
integrity sha512-Hoa2toc2+WrmHWLxuU360rc6ucC0U+aqOe8wCLaK5uDydgFKfum/ZfnnDlQKme8Y36sJSdQJzQSW3lRsIUKw5g==
"@abp/cms-kit.admin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.4.0-rc.2.tgz#fc48f420a8362521eee64cef7b4fab3f478d4041"
integrity sha512-ID0v2kUDFKf+dCGaOb3YLv8UkTnfGtUxIa3Xv3SoJUaCeiW/EbUZX/LTBOtCoe61EckfLw7ye+cpThVCODmvpg==
dependencies:
"@abp/codemirror" "~10.4.0-rc.1"
"@abp/jstree" "~10.4.0-rc.1"
"@abp/markdown-it" "~10.4.0-rc.1"
"@abp/slugify" "~10.4.0-rc.1"
"@abp/tui-editor" "~10.4.0-rc.1"
"@abp/uppy" "~10.4.0-rc.1"
"@abp/codemirror" "~10.4.0-rc.2"
"@abp/jstree" "~10.4.0-rc.2"
"@abp/markdown-it" "~10.4.0-rc.2"
"@abp/slugify" "~10.4.0-rc.2"
"@abp/tui-editor" "~10.4.0-rc.2"
"@abp/uppy" "~10.4.0-rc.2"
"@abp/cms-kit.public@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.4.0-rc.1.tgz#fae5e919809986e8624304f2843c254836000ea0"
integrity sha512-kDzetGtSIPsfmFZRVc+VOTGnsqehZqVniJfZOYQS2Wk7k62NBE0euY6kXiL06XSwYTN506EW/JAvTVdOsTgWwg==
"@abp/cms-kit.public@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.4.0-rc.2.tgz#59084743233abf797ba60b2d594e9a6d6923604a"
integrity sha512-BtBfxK8nQZgXlKMBt9m1M/iEtOtF1cPQsHj+o66cDEJ3BD2Ew2BxHzlW0bZpu4/a4F5lDidW8Pnagbz934cXtg==
dependencies:
"@abp/highlight.js" "~10.4.0-rc.1"
"@abp/star-rating-svg" "~10.4.0-rc.1"
"@abp/highlight.js" "~10.4.0-rc.2"
"@abp/star-rating-svg" "~10.4.0-rc.2"
"@abp/cms-kit@10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.4.0-rc.1.tgz#a0845f9d064214eddd045c49411959c29d1163bf"
integrity sha512-RRhknky8hrD6/oubscNy1faC7LI1/NnSV4c8GbiHDR0u2oma2Q2VfPi0z3EfnJZrgsNATj8IFRiQfGMaTA//6A==
"@abp/cms-kit@10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.4.0-rc.2.tgz#d73883226dcf6c324ec7685818355ebb826252d0"
integrity sha512-fbyJ/CWWdVwJc/59n2u41ScsfRxvB53m9G6mGWPTxC4pyokFUHNkjr8O0TdNaiXiZGZKZCEF4uptF3CptoI8rA==
dependencies:
"@abp/cms-kit.admin" "~10.4.0-rc.1"
"@abp/cms-kit.public" "~10.4.0-rc.1"
"@abp/cms-kit.admin" "~10.4.0-rc.2"
"@abp/cms-kit.public" "~10.4.0-rc.2"
"@abp/codemirror@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.4.0-rc.1.tgz#a5e40f42b3ad38c32829d689128dc559209dc57a"
integrity sha512-AD6oIBJOxXZEg1h8psyENVHvLb4YO/9cgUJcYLl3GZ1ZoUYiTo8FNQqY2LqqmVyLzI0MsrtmVnfNcnIq7eQRmg==
"@abp/codemirror@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.4.0-rc.2.tgz#60fa9ffe5be0ce0cb5fa419316eae26bd3023108"
integrity sha512-nixjVgxjP8pXLat5nSXKz/AJSYhOyoVZzwtqK9AU9Xj5mnn6XdnIL0Yhps+oLSX74Drbfn/haBPKulCou8FbCQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
codemirror "^5.65.1"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/highlight.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0-rc.1.tgz#f194b3997be014ccea5bed87afeb0349f9eee247"
integrity sha512-Zz4fzZWrHJVZhnOsPjrb/K+i5/WXqXQIQWrO6gLuCD0KK7SZxAplpkD2N6G96RDJaD6DwBrcb+h39F7AH5wcjw==
"@abp/highlight.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0-rc.2.tgz#0e98ae1dd3b14a77794d95ab707008c629c28c05"
integrity sha512-ZoZPvC3RDFktIZb8UjiapKkYLioT4jANR70P6dWosXMUteHu9kfAllXvyMHk9/DQ0A2y7bqTh5CfmxRh8WSguQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@highlightjs/cdn-assets" "~11.11.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/jstree@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.4.0-rc.1.tgz#d069a188b2b861d00dc990762ed6673128902c17"
integrity sha512-Z9guxmoAUg9KaJTnI0g0Xmh7I3O1LUVnCNiw0UTXYTx/Lj9q1hmZNVu4gtKdtUH0m7+clQay1Im1+AK9pJn7pg==
"@abp/jstree@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.4.0-rc.2.tgz#67889b03529df1c4b4eb0bb6a1ec71fc5c2f3e3b"
integrity sha512-mFCViFBdPuhYgcaSV4e+3Uusda+opHDGKmzcu8VqSp7dvAdBV01p2xddyAD6MdW6dukpLMydvTO+YCaa72ep9A==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jstree "^3.3.17"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/markdown-it@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.4.0-rc.1.tgz#5f0638b3662804fb14970ef8e62e484bd2e5b8d7"
integrity sha512-XrRxB6x4aQPFSunCNs3PmkzFwMD0sBVP31yGtVkz5zpKqmMWehcpOAJ1Z9TYNB/oEV7yuInFsNz04Ug133pcqw==
"@abp/markdown-it@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.4.0-rc.2.tgz#6e5ef4dc241f95dc74bb62c0f285d7aca81238a3"
integrity sha512-574qe5KnrxyVcG5Nz5syo7e8goXfKuAUC1X9QbQmnhj+RdNIKUaIdaRplO+D9XNlspqAWO475zbONOIuB0flzw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
markdown-it "^14.1.0"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.1.tgz#0f221d1d1602903da4012651727589b57b8adb68"
integrity sha512-CWoALCQprneoOmtoqHQK4iOKS4NUGsoHRcUhryzb8EqawXNRD2BXdgVwA/fDiwaVD2qn5EkcEIgOzchWMn8I8w==
"@abp/prismjs@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.2.tgz#a17284bd233b048f6be7bf31a7a7fc6af2a63057"
integrity sha512-lqIT3RUvhHNyy/DcTi/w+tXs02NT1yhY7b1pzm+mOWH9wBEOpEMtqFTHfX/oQpj8VRV3Ye/NDpWAZd11+4EMzQ==
dependencies:
"@abp/clipboard" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.1"
"@abp/clipboard" "~10.4.0-rc.2"
"@abp/core" "~10.4.0-rc.2"
prismjs "^1.30.0"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/slugify@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.4.0-rc.1.tgz#074bf48017201f1575e522fb93968762594a6416"
integrity sha512-S95dj/zi0lOvG3Ys9vpe7AEezUDdcXKdwMjTk9NHyZAWyWo/x2715MfowQb4Dk9nTAkz1B4LAWevpiOAbVN0+g==
"@abp/slugify@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.4.0-rc.2.tgz#5f6cb78687cab9be4de12a096eb3e3d13797e551"
integrity sha512-+X8Qs8yB+qQNzSCtOxTClGnTQMss5ogKotPqx+ztG19qn30YcxVOmlPXzDFFkMYO++xxoZh8Ny9RIYaNxiKNfA==
dependencies:
slugify "^1.6.6"
"@abp/star-rating-svg@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.4.0-rc.1.tgz#840b7f09248f2cc29a0d4fb6c349fec8ee11f2d9"
integrity sha512-OrqGeusiHiCMpccaFnvZuw9t8RhQz5nUHfSDQ5fu4jKBHTyQOrKyISktaZOsoNoM+SJMEr+rQ5hBE6+N81JzsQ==
"@abp/star-rating-svg@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.4.0-rc.2.tgz#f5534ed85fa5001fefb778ee0ad61d4000ff52e3"
integrity sha512-ol5LaDvf3hhpYz/Jpdk/5SwSwLfd9KhW5Si/SKZG43ie+M7xcU1AMhGJjOccx4iBV7s5HjGwwmy+I6+fik02yg==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
star-rating-svg "^3.5.0"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/tui-editor@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0-rc.1.tgz#b56ca2ee01f7d561a022c1b76bdd00e44742a1fb"
integrity sha512-wMtCMjOYupO4dHNqLT2qpBOoH0NGeK3zlnBmOCaVWrYCDySFLpcDhLdpNDyQXK1DZHGSbEWfPbygS50xaav/aQ==
"@abp/tui-editor@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0-rc.2.tgz#22e2fcf7f2ab02507a8f3ed159044f1d14bfd875"
integrity sha512-+xwOazOVxJTPGW+Fn+Gwwj94rzS5rCArqzPNQJ5mE87ZJ9/qK0yygiMqDgA9fomEc2vrvtXWPZYuF4/r2/PQ/g==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/prismjs" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
"@abp/prismjs" "~10.4.0-rc.2"
"@abp/uppy@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.4.0-rc.1.tgz#07fd0fd7761c3728d65c3a069a1dabdaff7f38b0"
integrity sha512-3Ha7vmwMPT7VrXKbADPNVLC6RX6aIa7tF2NTk3QK7VXtY4DoHONna0cr8EliCX0XsqWdYnP9AzqIESdHiMD7vA==
"@abp/uppy@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.4.0-rc.2.tgz#ce33d8c0dc17c48fd61472432776c8e8037d40bc"
integrity sha512-O89y2r7WsfvPwG9E9MLdIZlSuzsW2Z6b0mN6hlDIni1LQEYFAACnzyO95Iq04a37e7TwqSPp+JwZ93n7UL3ltw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
uppy "^5.1.2"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

16
modules/docs/.abpstudio/state.json

@ -1,16 +0,0 @@
{
"selectedKubernetesProfile": null,
"solutionRunner": {
"selectedProfile": "Default",
"targetFrameworks": [],
"applicationsStartingWithoutBuild": [],
"applicationBatchStartStates": [
{
"profile": "Default",
"applicationOrFolder": "VoloDocs.Web",
"value": 0
}
],
"folderBatchStartStates": []
}
}

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

@ -3,7 +3,7 @@
"name": "volo.docstestapp",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.1",
"@abp/docs": "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0-rc.2",
"@abp/docs": "~10.4.0-rc.2"
}
}

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

@ -2,222 +2,222 @@
# yarn lockfile v1
"@abp/anchor-js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.4.0-rc.1.tgz#9a03be2465267d6bb4b6803cac07a9cda18390d9"
integrity sha512-yn1NV/a8Z7404sghCEImpgzyafEO1EQ1DrYK5mDzn9RYiXlZoEj+OBT4O2X4HkzBjb1xg9KMq532QHi5O1IW/Q==
"@abp/anchor-js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.4.0-rc.2.tgz#d099cc8e7128743b4f3471db1be5669b01886eed"
integrity sha512-TuPCyIZl9yNTb26StwACswZsrhcukOTSsox5oLjKFukDd9cavmPnuK9aXc1ngGL1PsxUlE8x6df4exWXIhFr2w==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
anchor-js "^5.0.0"
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.1.tgz#18fa308c73a90f05dc460f85a0ec154f22706efb"
integrity sha512-AVl2q3wZ9erurV+FG5HiubOI1tU67ParPrvXPIbEbaQL8a6xJ1Qgyok8F0mpcesOqDjOIuEcA+EEjoylY2PSdw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.1.tgz#f9cbda73efc56197c743ac4e2c9524da7e1682fe"
integrity sha512-yoDFLJ7K+P7hdW1jXV0dFjQCLcjF9k32/ev/BBvd7GBjnnQLHI/IuAv94YnzxXZWgOjkD53FXeACAgD1zMzypQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.1"
"@abp/bootstrap" "~10.4.0-rc.1"
"@abp/bootstrap-datepicker" "~10.4.0-rc.1"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.1"
"@abp/datatables.net-bs5" "~10.4.0-rc.1"
"@abp/font-awesome" "~10.4.0-rc.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.1"
"@abp/lodash" "~10.4.0-rc.1"
"@abp/luxon" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.1"
"@abp/select2" "~10.4.0-rc.1"
"@abp/sweetalert2" "~10.4.0-rc.1"
"@abp/timeago" "~10.4.0-rc.1"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.1.tgz#cda847fd8a2d331c24981fe88abffa217a525add"
integrity sha512-zY6IKhneigrsui1qwM8VUzHTtVbg5s9GeqadF35um/yHYxrAC0rsx4luR9bafRWRTzprIhpzMwpHeVuXqoPcZQ==
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0-rc.2.tgz#77d3ea3f4cccd0cda7c9cf7c4ca3e136e106e385"
integrity sha512-+zvkAFm1D1SXdZGdKjibn1yqIAYp8xNYccnipPrc5b+4xxvH8QaihymT4Z/g/XPT484wdDk3mq8G1Z3COPxPgg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0-rc.2.tgz#ab4bd8d5d4a3491f1666a34f3c48d961bb1d67f8"
integrity sha512-f5WcdNAi1CsMbb0yzllTOD757d4hP+FrmjwZax67QSw91e6uDK6huxn//UIOGTKKPQM7gsy6Ov46/D4UiWQRmQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0-rc.2"
"@abp/bootstrap" "~10.4.0-rc.2"
"@abp/bootstrap-datepicker" "~10.4.0-rc.2"
"@abp/bootstrap-daterangepicker" "~10.4.0-rc.2"
"@abp/datatables.net-bs5" "~10.4.0-rc.2"
"@abp/font-awesome" "~10.4.0-rc.2"
"@abp/jquery-validation-unobtrusive" "~10.4.0-rc.2"
"@abp/lodash" "~10.4.0-rc.2"
"@abp/luxon" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/moment" "~10.4.0-rc.2"
"@abp/select2" "~10.4.0-rc.2"
"@abp/sweetalert2" "~10.4.0-rc.2"
"@abp/timeago" "~10.4.0-rc.2"
"@abp/aspnetcore.mvc.ui@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0-rc.2.tgz#5916af13a18dfe97d83e3282187ec81df51d0a11"
integrity sha512-hptwcUxq/IyL/jDPt2H7mcukaStTNNCOK2P785RHmTiT6t6YZSh1gTnJkjQkyxZLelilNbXY9jlIB//2ZHZsmw==
dependencies:
ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.1.tgz#cdee114e71352453f714e706da8461595f812195"
integrity sha512-ff85lSLGlw0BQiTlR4/ww6D7iZzmAaj1N9D6wcA58dUXUKWJqxRba1scEkSFNzjszqC6wY8CBereYcT8h/iBCA==
"@abp/bootstrap-datepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0-rc.2.tgz#5178d87e00144715c3d8ff6f561cb04e04d3615c"
integrity sha512-6D+YCEAkrQBTPzAF+87AsB9iCewz1WEaZ707bSzcKGAComYSv04/vWmTXWiYBYJlYWj9wzPYyGU4+Xb+p8L73g==
dependencies:
bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.1.tgz#13f5f19b67b6ed21e934b2cffe82eb96c9989fd0"
integrity sha512-oaQ3ngFyVNsO3iJAZWW6IoG12Fz6qmoGupXC9mtkVpwL/u9g5v5q5xWtwpqyNMt3z57tBFG9M+lmcyDHQpp2+w==
"@abp/bootstrap-daterangepicker@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0-rc.2.tgz#e7f5f776542393a79573912c970279b65cb92d78"
integrity sha512-6fRgqgkh1gn2Ign9vQbEzP7G3fNyeLU7zpnixUxKLmBr0STo0vtf8CPG7c6CDLEwbXqdQy2wFE7pTlj61fOJzg==
dependencies:
"@abp/moment" "~10.4.0-rc.1"
"@abp/moment" "~10.4.0-rc.2"
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.1.tgz#ecc25cdb3d49f0fead1f0917e1539e9d22435170"
integrity sha512-c6jCoXQPpi29jRtWGzoHg2ky7omd9cFjgouXZ/aoLnNLbARFd1R1rgkAi9cdsLtpYpDiLOlukVUBRM7ebC/4Ig==
"@abp/bootstrap@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0-rc.2.tgz#734ef046f238b80bea5851091e00afd2f6d9bb13"
integrity sha512-/RqQ7M352TL8dU+R2qKr3C2PVyPNHIa3QNYcUI3/G4PFrY50hIIgW5jDoptaZZ1RkijjFyMyhh4DKTHuKtSzkA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.1.tgz#f1b9435fbacdd2515450a44030f63e1ad4d80353"
integrity sha512-aMer6rFiy09n6fFy48DDEdvhxKAS27GarFH3o/z52qyhYKyc+NKdcxaKyvpXXYmuQE0l1Ss5EIILyR/BJdJjuA==
"@abp/clipboard@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0-rc.2.tgz#6cdb71282ca31f0aeb902d3188f8b5a626934970"
integrity sha512-9eWL6tqK4uZTdaRBx0UBKqWR3A6jXNS91uiNmRIce4gPYao++lpx3hlQtq4WttvTs6QD3P7OBlSy4pjBdggNIw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
clipboard "^2.0.11"
"@abp/core@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.1.tgz#a78a29a8f30b75741bef039abd437fabd6e51a66"
integrity sha512-2qnVnaRWpZmg5HV62M7HayRYK3kVsmX+W2SAHvoV6ti5GRHcJl0KUbZB/Z7W4ZtAs3eDt0VCE9HaYs6MGXxZTg==
"@abp/core@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0-rc.2.tgz#2de1844bb1e06fe74c32b1519e228401752e0575"
integrity sha512-yvJLhebmo17T0lgOcq02EtslbZuMzdeQ/r5brNtxFWIX2l1vQye3jd1uCYQqSR6X7lv/GbZbygxd6AHZo7V8Qw==
dependencies:
"@abp/utils" "~10.4.0-rc.1"
"@abp/utils" "~10.4.0-rc.2"
"@abp/datatables.net-bs5@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.1.tgz#b7bcd3b55faeb1b1932efbd5dcb75bf4eac362ed"
integrity sha512-cW/ANToZxem3qiv38qTHIjIzpz58ictcKAdwcobL1rGUoa7CSfQDzcAjSmKK/uYxgWnd3Ph7PaN4IQQlzQcRQw==
"@abp/datatables.net-bs5@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0-rc.2.tgz#5ee12d5735a149ecfe43c2153260189342e31b8f"
integrity sha512-1GXj/A0jjCbPtFM2r+ERnIJDlpTDRoj4ZkVkEJs20vHYvXzA/zh5efp5tP/As5Xie8+pTsh8XN7eK3IynJXa/g==
dependencies:
"@abp/datatables.net" "~10.4.0-rc.1"
"@abp/datatables.net" "~10.4.0-rc.2"
datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.1.tgz#c664a5bafc8357d59baeee5340aa9ca0662f5d9c"
integrity sha512-C1qHyqL+Viw9MfG4B8wF3kyE6NqeB1COfbWiXsk1y4hH8mu8m5b226YaqPYi9DrhU5N0QZ0UvG34GkTLEWK++Q==
"@abp/datatables.net@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0-rc.2.tgz#e8696867580e16766c123d5e3e6f424f2e165af6"
integrity sha512-Ah1oO9MIfAY3s50xvuRhfc0nS44+AoCQuOUbdHLRWQrzNaw6mETqYRCYF7CWajUdvCzV+O002cYr6U8iVfjSWw==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
datatables.net "^2.3.4"
"@abp/docs@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.4.0-rc.1.tgz#1cfaf7acc4ff6e277250377d5a1d76442e3af1f5"
integrity sha512-tvNMlsUaxytRKZNmQovBs5CuvGXw8E6CUuuEtpJIkYO3SGyHrGwvvlL3xvHTmaj6cywdgVAPCROwOVxNe0wBkw==
"@abp/docs@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.4.0-rc.2.tgz#2e4758c509311885223bf71a33ae5934c0080698"
integrity sha512-4CmVRQFI/AW806oKLvjzKTtelduScaaeEZwgPd22WsXMqlVEA5DJQmfdQ1hMc2yHICt8cCgrMfAALcOqOPmxDg==
dependencies:
"@abp/anchor-js" "~10.4.0-rc.1"
"@abp/clipboard" "~10.4.0-rc.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.1"
"@abp/popper.js" "~10.4.0-rc.1"
"@abp/prismjs" "~10.4.0-rc.1"
"@abp/anchor-js" "~10.4.0-rc.2"
"@abp/clipboard" "~10.4.0-rc.2"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0-rc.2"
"@abp/popper.js" "~10.4.0-rc.2"
"@abp/prismjs" "~10.4.0-rc.2"
"@abp/font-awesome@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.1.tgz#add06f0f6727ab1de815783103f19d28a30befe1"
integrity sha512-5o4bIjfNO7NfpkD5dVqgx52sJ2cs3pOZQY0XgrEaZrFKNrQwdkbQMu48wS2R4l3ntSKFj1rMB0OxInkG8vx6uQ==
"@abp/font-awesome@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0-rc.2.tgz#83a3e8b47ef0e9b466cb786dfd7f34abe4a945f4"
integrity sha512-/Mzzcp8CANHWx+d7PZmZJvNBfnRj4E0+/eaXGK8I/vqGtiot0rXoHkgB+Mg4y83dJgPcBwDW9BEv8Q9gGEgswg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.1.tgz#96dff826f5c806f85b28fab477e6414af781a18f"
integrity sha512-5GkSNcHSz9opzqrzWphJhUNrBlpIZxk07ialo5gvIFV0/cC2jTDGe/7u3QKb1ZpDkjT/M66YL7kHrlpqLuPW6g==
"@abp/jquery-validation-unobtrusive@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0-rc.2.tgz#d595ba387bff99fa7e7c3a9d416c1f7692c73760"
integrity sha512-lqZh5Y7Wk96pzykdZd6Z3TaQo5KnkV3ZDMqJIhc/Rfu5ReLGS+dqsLlA/2S7ZTtuaJMEerSX6g3M7v1QGRQPvQ==
dependencies:
"@abp/jquery-validation" "~10.4.0-rc.1"
"@abp/jquery-validation" "~10.4.0-rc.2"
jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.1.tgz#510fcb3ffda2cb9ac12c66ae757f6e9742e4b6a7"
integrity sha512-vAlCcHMM/gbLuoTrDLGIU52GS70B+SjRwSEj4VSzvdnisjxz+6d+lfZWUYpLF2HO8pIEf5NQ/Dx76YudpK6TeQ==
"@abp/jquery-validation@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0-rc.2.tgz#1b8231a256c34566960fc53749acdd596d4b0d4e"
integrity sha512-axnYg2zd3v9mxWW3eePnqQV6/j56hgR949ppopa5aGmv4pQwBkeY4qhOzAkKWwhZ/R7PB+zDygBX4UGAABR8GQ==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.1.tgz#f26ea65b0feb7786bf8a42b3e3503f7d5a65a650"
integrity sha512-UThaMvuQYpLuGLIBN1nU2oueCxacZbxVVGfAXtpibTzbRriLIYI6Ed4gdfZAwM3vyjOU/Ukyb6jdpBHbguLaaQ==
"@abp/jquery@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0-rc.2.tgz#f3ecd9b874c44409f3fa287b3735eb05327cf8b8"
integrity sha512-F9ntMu+SyfzGyOU6t/ymSdzv1StQT6iazZZCtzWPz6zVZcQfE2h/KU1tIoVy3QQylBVGM5jUbYtBgLUN7izKlw==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
jquery "~3.7.1"
"@abp/lodash@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.1.tgz#8b192052f19b889e8f5ba06e79af64813b78d7ae"
integrity sha512-p9Uk5spfVoDb8k9rnG7lYSMpj4Z0S6B0Bbmn/l5sxpME4VLZDi/uAhCWUhJjxG5+Sl9or5Es9LWzXL0HLLi1VQ==
"@abp/lodash@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0-rc.2.tgz#5acfdd1c3d6b21531fa70ba1665c5115df7855fd"
integrity sha512-iSkNvwp7W74flDm3hv6gsIP1ie9rNsI95/TbgZN1yBEU+GC27zl2vDcUJuIZvl1GZOxGQWrVNNGsTPzemokXKQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
lodash "^4.18.1"
"@abp/luxon@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.1.tgz#ba962f9221a9dab1dc20b270c6878b21c7c62282"
integrity sha512-XLrb53lwTNYYaGd+Jg5TIMl/BjCAF7Wx/tWawvpCG14nMEaSQapL3n3a0w3ptTCTyQiQq310SjX7I6sitpkOuA==
"@abp/luxon@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0-rc.2.tgz#ca5bd2e4f8c92303b9d1a3e557d02f04596efd6c"
integrity sha512-W5Y0TO1/CUEpquBZ2jg7FzbXgiw10Ik+a5wXupRXHKHNFhLG4gSh1l+w0Olvoxx0OwmKWztBHqDsSoMXrizcgA==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.1.tgz#de55092d711aac0ac13d9a4e25a2b3d5e1b28554"
integrity sha512-HN1mf4AVnUZSWqn5hHAovZRwGG0jUgWA4k5JeCPdX2icKkKCZY6kAWi7uuqJoGVYyQiiqnakJpt/B6ODEjHNwA==
"@abp/malihu-custom-scrollbar-plugin@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0-rc.2.tgz#d3732924171865e626b1cfd3a5fc995da1143ba6"
integrity sha512-fxagBRXD3Ukn3ZrhiadMl76GjEou66eBCsJoIbHHM+6MQKXcxr7LzktbPAo2W2TllyQVvQvVv8g/MpR2ZtpOZQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.1.tgz#80efe607a2a4e8a776eb319430d385b986d671c6"
integrity sha512-E44muWdbSNbpK4tlthWFkJNoIY1zFlteqnpNfs7cCiAbBCJXIjoF9Zo1QujEabMIFTGfoFUiHJy85Zi1WWADgA==
"@abp/moment@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0-rc.2.tgz#321f2117460f74b0e00a823098c3495aabfde676"
integrity sha512-5xUjKagARURtCB3bPcj5rcZDKlwDzZoEdC5nE637u2DJwhHPRKSAL6sJN1NrouOZnSrv8QWp4YptwbjigRYeHA==
dependencies:
moment "^2.30.1"
"@abp/popper.js@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.1.tgz#cbc9fc7e6fa3401dc113dd4fbb7202844b177d13"
integrity sha512-HK8eLvueEREP1Y8XeiyJDLN/3Z1dlqGM2GSyeN8GDSV8bUXDX9WZ53nbl+vCRqM4NFiE+oz+5SXArMzm+54UHQ==
"@abp/popper.js@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0-rc.2.tgz#d0ae71c8ac1edc20ae1c3e77b9d314e2374fbb70"
integrity sha512-VmXHdbbWjh5qiNQoxvr0geGMoKWAby+COB+ymHEiBjSXfL6Cg0W6R5kZEAZFGhtXImXqjzUxphWF/97CGvS4Zg==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
"@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.1.tgz#0f221d1d1602903da4012651727589b57b8adb68"
integrity sha512-CWoALCQprneoOmtoqHQK4iOKS4NUGsoHRcUhryzb8EqawXNRD2BXdgVwA/fDiwaVD2qn5EkcEIgOzchWMn8I8w==
"@abp/prismjs@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0-rc.2.tgz#a17284bd233b048f6be7bf31a7a7fc6af2a63057"
integrity sha512-lqIT3RUvhHNyy/DcTi/w+tXs02NT1yhY7b1pzm+mOWH9wBEOpEMtqFTHfX/oQpj8VRV3Ye/NDpWAZd11+4EMzQ==
dependencies:
"@abp/clipboard" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.1"
"@abp/clipboard" "~10.4.0-rc.2"
"@abp/core" "~10.4.0-rc.2"
prismjs "^1.30.0"
"@abp/select2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.1.tgz#5aee7a1ba18bc50fafc312fa79c77d4ae7fb9f18"
integrity sha512-59E34PMvB5PdFkJ/cIq5aLQDTCpq9Zj/vNuwd0X74KUAM3A9zySwL5qjjCsrIqYVfjWitA/fr2AzwQG1xPnWIA==
"@abp/select2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0-rc.2.tgz#38dd0ed5ce9ffcec24f8c5932303bd78d6afcb35"
integrity sha512-7WSECOwknIPNDOJUYOrs+k6lMLn9HPwaO1kz0594F2D0q/G2UzNE+aDiJ0DnWUVnUOZvKDYfesdG+aaL+Lg8VQ==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.1.tgz#f9dcf03b9e0f119b727b15c0e67ce5e85d7736fb"
integrity sha512-fzahaJCz6MfMeWbn2mBklPbuO5aAZdlInPdbd7KXL3qWrN4uBy9Gedgjy7Ohbf6Ca5ZiiPHYAcgYmy3EQ094tA==
"@abp/sweetalert2@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0-rc.2.tgz#70828ec8421f0a8e313b7573a999232dae21a664"
integrity sha512-oJXNcLwQmV52sBL/g5ZaDM16TmDgA8h4CxpvG9GapTyIxU/oXtrXDpDeR62eHYSwNsEnBKp1/CiG70N8dDMOag==
dependencies:
"@abp/core" "~10.4.0-rc.1"
"@abp/core" "~10.4.0-rc.2"
sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.1.tgz#4d83745367d6189fe9f846e166e958775d4d0b67"
integrity sha512-mZp8/lS3yNpjlx7mgVcJhpwUzw3HDtGG6KMMEm12oi0sOY7BborM3HaM9Cw8o+fLDXKQV7DTlU0YuoXJ8zgcoQ==
"@abp/timeago@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0-rc.2.tgz#896de9979f7fc9693da5f817e792e26e32d69449"
integrity sha512-BxFpQGg/LUqvRf4wbzCf0fz4ZyU37QKGEUKzUSV9RzNj8VaHuWBIW/OaS2op9D2Z2m94Cq8WQYMFUap0lQP8oA==
dependencies:
"@abp/jquery" "~10.4.0-rc.1"
"@abp/jquery" "~10.4.0-rc.2"
timeago "^1.6.7"
"@abp/utils@~10.4.0-rc.1":
version "10.4.0-rc.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.1.tgz#de16d025b5e8c7668cf9a1fb6d709a41543527f7"
integrity sha512-gmr7tA33RX/zPdjxB4aniJpnCpV1tOMPnHTHX1mt9LaLy+jwdxD5HhhMr/ZPTakhZYtOxk3uayzQJMzJ1g0Lbw==
"@abp/utils@~10.4.0-rc.2":
version "10.4.0-rc.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0-rc.2.tgz#7ac5d652c9f4f3e44593c3ce7a89556e09fa2c43"
integrity sha512-+kT1N+E3D1TqvQD2kJqH+EmXUN6xUvSoOAEkDI6kwtfYfjjBWvxaNfy5AnT938qiFkU03npbAB+x/2H3A6St1Q==
dependencies:
just-compare "^2.3.0"

4
modules/identity/.abpstudio/state.json

@ -1,4 +0,0 @@
{
"selectedRunnerProfile": null,
"selectedKubernetesProfile": null
}

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs

@ -11,6 +11,7 @@ public static class IdentityErrorCodes
public const string UsersCanNotChangeTwoFactor = "Volo.Abp.Identity:010007";
public const string CanNotChangeTwoFactor = "Volo.Abp.Identity:010008";
public const string YouCannotDelegateYourself = "Volo.Abp.Identity:010009";
public const string OrganizationUnitParentTenantMismatch = "Volo.Abp.Identity:010010";
public const string ClaimNameExist = "Volo.Abp.Identity:010021";
public const string CanNotUpdateStaticClaimType = "Volo.Abp.Identity:010022";
public const string CanNotDeleteStaticClaimType = "Volo.Abp.Identity:010023";

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "لا يمكنك تغيير إعداد العاملين.",
"Volo.Abp.Identity:010008": "لا يجوز تغيير إعداد عاملين.",
"Volo.Abp.Identity:010009": "لا يمكنك تفويض نفسك.",
"Volo.Abp.Identity:010010": "الوحدة التنظيمية الأصل ('{ParentId}') غير موجودة أو تنتمي إلى مستأجر آخر.",
"Volo.Abp.Identity:010021": "الاسم {0} موجود بالفعل.",
"Volo.Abp.Identity:010022": "لا يمكن تحديث نوع المطابقة.",
"Volo.Abp.Identity:010023": "لا يمكن حذف نوع المطابقة.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Nastavení dvou faktorů nemůžete změnit.",
"Volo.Abp.Identity:010008": "Není povoleno měnit nastavení dvou faktorů.",
"Volo.Abp.Identity:010009": "Nemůžete delegovat své vlastní oprávnění.",
"Volo.Abp.Identity:010010": "Nadřazená organizační jednotka ('{ParentId}') neexistuje nebo patří jinému tenantovi.",
"Volo.Abp.Identity:010021": "Název '{0}' již existuje.",
"Volo.Abp.Identity:010022": "Nelze aktualizovat statický typ deklarace.",
"Volo.Abp.Identity:010023": "Nelze smazat statický typ deklarace.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Sie können Ihre Zwei-Faktor-Einstellung nicht ändern.",
"Volo.Abp.Identity:010008": "Die Zwei-Faktor-Einstellung dürfen nicht geändert werden.",
"Volo.Abp.Identity:010009": "Sie können sich nicht selbst delegieren.",
"Volo.Abp.Identity:010010": "Die übergeordnete Organisationseinheit ('{ParentId}') existiert nicht oder gehört zu einem anderen Mandanten.",
"Volo.Abp.Identity:010021": "Der Name existiert bereits {0}",
"Volo.Abp.Identity:010022": "Der Name kann nicht aktualisiert werden.",
"Volo.Abp.Identity:010023": "Der Name kann nicht gelöscht werden.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json

@ -76,6 +76,7 @@
"Volo.Abp.Identity:010007": "Δεν μπορείτε να αλλάξετε τη ρύθμιση δύο παραγόντων.",
"Volo.Abp.Identity:010008": "Δεν επιτρέπεται η αλλαγή της ρύθμισης δύο παραγόντων.",
"Volo.Abp.Identity:010009": "Δεν μπορείτε να αναθέσετε την εξουσιοδότησή σας σε εσάς ίδιο.",
"Volo.Abp.Identity:010010": "Η γονική μονάδα οργάνωσης ('{ParentId}') δεν υπάρχει ή ανήκει σε διαφορετικό μισθωτή.",
"Volo.Abp.Identity:010021": "Το όνομα '{0}' υπάρχει ήδη.",
"Volo.Abp.Identity:010022": "Δεν μπορείτε να ενημερώσετε ένα στατικό τύπο δήλωσης.",
"Volo.Abp.Identity:010023": "Δεν μπορείτε να διαγράψετε ένα στατικό τύπο δήλωσης.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json

@ -76,6 +76,7 @@
"Volo.Abp.Identity:010007": "You can't change your two factor setting.",
"Volo.Abp.Identity:010008": "Changing the two factor setting is not allowed.",
"Volo.Abp.Identity:010009": "You cannot delegate yourself!",
"Volo.Abp.Identity:010010": "The parent organisation unit ('{ParentId}') does not exist, or it belongs to a different tenant.",
"Volo.Abp.Identity:010021": "Name exist: '{0}'",
"Volo.Abp.Identity:010022": "Can not update a static ClaimType.",
"Volo.Abp.Identity:010023": "Can not delete a static ClaimType.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "You can't change your two factor setting.",
"Volo.Abp.Identity:010008": "It's not allowed to change two factor setting.",
"Volo.Abp.Identity:010009": "You can not delegate yourself.",
"Volo.Abp.Identity:010010": "The parent organization unit ('{ParentId}') does not exist, or it belongs to a different tenant.",
"Volo.Abp.Identity:010021": "Name exist: '{0}'.",
"Volo.Abp.Identity:010022": "Can not update a static ClaimType.",
"Volo.Abp.Identity:010023": "Can not delete a static ClaimType.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "No puedes cambiar tu configuración de autentificación de dos pasos.",
"Volo.Abp.Identity:010008": "No está permitido cambiar la configuración de autenticación de dos pasos.",
"Volo.Abp.Identity:010009": "No puedes delegar tu propia cuenta!",
"Volo.Abp.Identity:010010": "La unidad organizativa padre ('{ParentId}') no existe o pertenece a otro inquilino.",
"Volo.Abp.Identity:010021": "Ya existe un con el nombre '{0}'",
"Volo.Abp.Identity:010022": "No se puede actualizar un tipo de reclamación estática.",
"Volo.Abp.Identity:010023": "No se puede borrar un tipo de reclamación estática.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "شما نمی توانید تنظیمات دو مرحله ای خود را تغییر دهید.",
"Volo.Abp.Identity:010008": "تغییر دادن تنظیمات دو مرحله ای مجاز نمی باشد.",
"Volo.Abp.Identity:010009": "شما نمی توانید خودتان را معرفی کنید.",
"Volo.Abp.Identity:010010": "واحد سازمانی والد ('{ParentId}') وجود ندارد یا متعلق به مستاجر دیگری است.",
"Volo.Abp.Identity:010021": "نام {0} قبلاً استفاده گردیده است.",
"Volo.Abp.Identity:010022": "نمی توان نام نقش/وظیفه را تغییر داد.",
"Volo.Abp.Identity:010023": "نمی توان نقش/وظیفه را حذف کرد.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Et voi muuttaa kahden tekijän asetusta.",
"Volo.Abp.Identity:010008": "Kahden tekijän asetusta ei saa muuttaa.",
"Volo.Abp.Identity:010009": "Et voi delegoida itseäsi.",
"Volo.Abp.Identity:010010": "Ylätason organisaatioyksikköä ('{ParentId}') ei ole olemassa tai se kuuluu toiselle vuokralaiselle.",
"Volo.Abp.Identity:010021": "{0} on jo olemassa.",
"Volo.Abp.Identity:010022": "Staattista väittämätunnusta ei voi päivittää.",
"Volo.Abp.Identity:010023": "Staattista väittämätunnusta ei voi poistaa.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Vous ne pouvez pas modifier votre paramètre à deux facteurs.",
"Volo.Abp.Identity:010008": "Il n’est pas permis de changer deux facteurs de réglage.",
"Volo.Abp.Identity:010009": "Vous ne pouvez pas vous déléguer vous-même.",
"Volo.Abp.Identity:010010": "L'unité d'organisation parente ('{ParentId}') n'existe pas ou appartient à un autre locataire.",
"Volo.Abp.Identity:010021": "Le nom '{0}' existe déjà.",
"Volo.Abp.Identity:010022": "Vous ne pouvez pas modifier un type de revendication statique.",
"Volo.Abp.Identity:010023": "Vous ne pouvez pas supprimer un type de revendication statique.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "आप अपनी दो कारक सेटिंग नहीं बदल सकते।",
"Volo.Abp.Identity:010008": "इसे दो कारक सेटिंग बदलने की अनुमति नहीं है।",
"Volo.Abp.Identity:010009": "आप अपने आप को अधिकृत नहीं कर सकते हैं!",
"Volo.Abp.Identity:010010": "मूल संगठन इकाई ('{ParentId}') मौजूद नहीं है या किसी अन्य किरायेदार की है।",
"Volo.Abp.Identity:010021": "नाम '{0}' पहले से ही लिया गया है।",
"Volo.Abp.Identity:010022": "स्थैतिक भूमिकाओं का नाम नहीं बदला जा सकता है।",
"Volo.Abp.Identity:010023": "स्थैतिक भूमिकाओं को हटाया नहीं जा सकता।",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Ne možete promijeniti postavku dva faktora.",
"Volo.Abp.Identity:010008": "Nije dopušteno mijenjati postavke dvofaktorske autentifikacije.",
"Volo.Abp.Identity:010009": "Ne možete delegirati sami sebi.",
"Volo.Abp.Identity:010010": "Nadređena organizacijska jedinica ('{ParentId}') ne postoji ili pripada drugom najmoprimcu.",
"Volo.Abp.Identity:010021": "Naziv '{0}' već postoji.",
"Volo.Abp.Identity:010022": "Ne možete ažurirati statički tip deklaracije.",
"Volo.Abp.Identity:010023": "Ne možete izbrisati statički tip deklaracije.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Nem változtathatja meg a kétlépcsős bejelentkezés beállítását.",
"Volo.Abp.Identity:010008": "Kétlépcsős bejelentkezés beállítás megváltoztatása nem megengedett.",
"Volo.Abp.Identity:010009": "Nem adhatja át a saját jogosultságait.",
"Volo.Abp.Identity:010010": "A szülő szervezeti egység ('{ParentId}') nem létezik, vagy egy másik bérlőhöz tartozik.",
"Volo.Abp.Identity:010021": "'{0}' nevű már létezik.",
"Volo.Abp.Identity:010022": "Nem lehet frissíteni a statikus jogosultság típusát.",
"Volo.Abp.Identity:010023": "Nem lehet törölni a statikus jogosultság típusát.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Þú getur ekki breytt tveggja þátta stillingu þinni.",
"Volo.Abp.Identity:010008": "Það er ekki leyfilegt að breyta tvíþátta stillingu.",
"Volo.Abp.Identity:010009": "Þú getur ekki delegað þér sjálfum.",
"Volo.Abp.Identity:010010": "Yfirskipulagseiningin ('{ParentId}') er ekki til eða tilheyrir öðrum leigjanda.",
"Volo.Abp.Identity:010021": "Nafnið '{0}' er þegar í notkun.",
"Volo.Abp.Identity:010022": "Ekki er hægt að breyta static hlutverk.",
"Volo.Abp.Identity:010023": "Ekki er hægt að eyða static hlutverkum.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Non puoi modificare l'impostazione dei due fattori.",
"Volo.Abp.Identity:010008": "Non è consentito modificare l'impostazione a due fattori.",
"Volo.Abp.Identity:010009": "Non puoi delegare te stesso.",
"Volo.Abp.Identity:010010": "L'unità organizzativa padre ('{ParentId}') non esiste o appartiene a un altro tenant.",
"Volo.Abp.Identity:010021": "Il nome '{0}' è già in uso.",
"Volo.Abp.Identity:010022": "Non puoi modificare il tipo di richiesta statica.",
"Volo.Abp.Identity:010023": "Non puoi eliminare il tipo di richiesta statica.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "U kunt uw instelling voor tweefactor authenticatie niet wijzigen.",
"Volo.Abp.Identity:010008": "Het is niet toegestaan om de instelling van tweefactor authenticatie te wijzigen.",
"Volo.Abp.Identity:010009": "U kunt uzelf niet delegeren.",
"Volo.Abp.Identity:010010": "De bovenliggende organisatie-eenheid ('{ParentId}') bestaat niet of behoort tot een andere tenant.",
"Volo.Abp.Identity:010021": "Er bestaat al een met de naam '{0}'.",
"Volo.Abp.Identity:010022": "Kan de naam van een statische claim niet wijzigen.",
"Volo.Abp.Identity:010023": "Kan de naam van een statische claim niet verwijderen.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Nie możesz zmienić ustawienia dwóch czynników.",
"Volo.Abp.Identity:010008": "Nie wolno zmieniać ustawienia dwuczynnikowego.",
"Volo.Abp.Identity:010009": "Nie możesz delegować swoich uprawnień.",
"Volo.Abp.Identity:010010": "Nadrzędna jednostka organizacyjna ('{ParentId}') nie istnieje lub należy do innego dzierżawcy.",
"Volo.Abp.Identity:010021": "Nazwa '{0}' już istnieje.",
"Volo.Abp.Identity:010022": "Nie można zmienić typu statycznej deklaracji.",
"Volo.Abp.Identity:010023": "Nie można usunąć typu statycznej deklaracji.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Você não pode alterar sua configuração de dois fatores.",
"Volo.Abp.Identity:010008": "Não é permitido alterar a configuração de dois fatores.",
"Volo.Abp.Identity:010009": "Você não pode delegar a si mesmo.",
"Volo.Abp.Identity:010010": "A unidade organizacional pai ('{ParentId}') não existe ou pertence a outro inquilino.",
"Volo.Abp.Identity:010021": "Já existe um(a) {0} com o nome.",
"Volo.Abp.Identity:010022": "Não é possível alterar o tipo de declaração estática.",
"Volo.Abp.Identity:010023": "Não é possível excluir o tipo de declaração estática.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Nu vă puteţi schimba setările de autentificare în doi paşi.",
"Volo.Abp.Identity:010008": "Nu este permisă modificarea setărilor autentificării în doi paşi.",
"Volo.Abp.Identity:010009": "Nu vă puteţi delega singur.",
"Volo.Abp.Identity:010010": "Unitatea organizațională părinte ('{ParentId}') nu există sau aparține unui alt chiriaș.",
"Volo.Abp.Identity:010021": "Numele '{0}' este deja luat.",
"Volo.Abp.Identity:010022": "Nu poate fi schimbată tipul de declaraţie statică.",
"Volo.Abp.Identity:010023": "Nu poate fi ştersă declaraţia statică.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Вы не можете изменить настройку двух факторов.",
"Volo.Abp.Identity:010008": "Изменение двухфакторной настройки не допускается.",
"Volo.Abp.Identity:010009": "Вы не можете делегировать свои собственные права.",
"Volo.Abp.Identity:010010": "Родительское организационное подразделение ('{ParentId}') не существует или принадлежит другому арендатору.",
"Volo.Abp.Identity:010021": "Имя '{0}' уже существует.",
"Volo.Abp.Identity:010022": "Невозможно изменить тип статической декларации.",
"Volo.Abp.Identity:010023": "Невозможно удалить тип статической декларации.",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json

@ -77,6 +77,7 @@
"Volo.Abp.Identity:010007": "Dvojfaktorové nastavenie nie je možné zmeniť.",
"Volo.Abp.Identity:010008": "Dvojfaktorové nastavenie nie je povolené zmeniť.",
"Volo.Abp.Identity:010009": "Nemôžete delegovať svoje vlastné oprávnenia.",
"Volo.Abp.Identity:010010": "Nadradená organizačná jednotka ('{ParentId}') neexistuje alebo patrí inému nájomcovi.",
"Volo.Abp.Identity:010021": "Názov '{0}' sa už používa.",
"Volo.Abp.Identity:010022": "Nie je možné zmeniť typ statického oprávnenia.",
"Volo.Abp.Identity:010023": "Nie je možné odstrániť typ statického oprávnenia.",

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

Loading…
Cancel
Save