Browse Source

Merge branch 'abpframework:dev' into cleaning

pull/20539/head
Mark Cilia Vincenti 2 years ago
committed by GitHub
parent
commit
144159fba3
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      docs/en/ambient-context-pattern.md
  2. 2
      docs/en/aspect-oriented-programming.md
  3. 2
      docs/en/cli/index.md
  4. 216
      docs/en/docs-nav.json
  5. 2
      docs/en/dynamic-proxying-interceptors.md
  6. 11
      docs/en/framework/api-development/index.md
  7. 6
      docs/en/framework/api-development/standard-apis/index.md
  8. 6
      docs/en/framework/architecture/best-practices/application-layer-overview.md
  9. 2
      docs/en/framework/architecture/best-practices/application-services.md
  10. 6
      docs/en/framework/architecture/best-practices/data-access-overview.md
  11. 2
      docs/en/framework/architecture/best-practices/data-transfer-objects.md
  12. 7
      docs/en/framework/architecture/best-practices/domain-layer-overview.md
  13. 2
      docs/en/framework/architecture/best-practices/domain-services.md
  14. 2
      docs/en/framework/architecture/best-practices/entities.md
  15. 2
      docs/en/framework/architecture/best-practices/entity-framework-core-integration.md
  16. 2
      docs/en/framework/architecture/best-practices/index.md
  17. 2
      docs/en/framework/architecture/best-practices/module-architecture.md
  18. 2
      docs/en/framework/architecture/best-practices/mongodb-integration.md
  19. 2
      docs/en/framework/architecture/best-practices/repositories.md
  20. 7
      docs/en/framework/architecture/domain-driven-design/application-layer.md
  21. 9
      docs/en/framework/architecture/domain-driven-design/domain-layer.md
  22. 2
      docs/en/framework/fundamentals/application-startup.md
  23. 16
      docs/en/framework/fundamentals/index.md
  24. 2
      docs/en/framework/infrastructure/concurrency-check.md
  25. 31
      docs/en/framework/infrastructure/index.md
  26. 2
      docs/en/framework/ui/angular/authorization.md
  27. 2
      docs/en/framework/ui/angular/breadcrumb.md
  28. 2
      docs/en/framework/ui/angular/extensions-overall.md
  29. 4
      docs/en/framework/ui/angular/quick-start.md
  30. 2
      docs/en/framework/ui/angular/service-proxies.md
  31. 9
      docs/en/framework/ui/index.md
  32. 2
      docs/en/framework/ui/mvc-razor-pages/client-side-package-management.md
  33. 4
      docs/en/get-started/layered-web-application.md
  34. 4
      docs/en/get-started/single-layer-web-application.md
  35. 1
      docs/en/guides/migrating-from-open-source.md
  36. 9
      docs/en/release-info/index.md
  37. 4
      docs/en/release-info/migration-guides/abp-8-3.md
  38. 2
      docs/en/studio/installation.md
  39. 7
      docs/en/tools.md
  40. 0
      docs/en/tutorials/book-store/index.md
  41. 6
      docs/en/tutorials/index.md
  42. 2
      docs/en/tutorials/todo/layered/index.md
  43. 2
      docs/en/tutorials/todo/single-layer/index.md
  44. 2
      docs/en/ui-themes/lepton-x/angular-customization.md
  45. 2
      docs/en/ui-themes/lepton-x/angular/how-to-add-a-new-variation-to-lepton-x-for-angular.md
  46. 2
      docs/en/ui-themes/lepton-x/angular/how-to-change-default-theme-option.md
  47. 2
      docs/en/ui-themes/lepton-x/comparison-obsolete.md
  48. 6
      modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentRenderErrorEvent.cs
  49. 3
      modules/docs/src/Volo.Docs.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs
  50. 2
      modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs
  51. 9
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
  52. 10
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs
  53. 87
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.css
  54. 34
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.js
  55. 4
      npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html
  56. 26
      npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss
  57. 12
      npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts
  58. 4
      nupkg/common.ps1

2
docs/en/ambient-context-pattern.md

@ -1,3 +1,3 @@
## Ambient Context Pattern # Ambient Context Pattern
This document is planned to be written later. This document is planned to be written later.

2
docs/en/aspect-oriented-programming.md

@ -1,3 +1,3 @@
## Dynamic Proxying / Interceptors # Dynamic Proxying / Interceptors
This document is planned to be written later. This document is planned to be written later.

2
docs/en/cli/index.md

@ -105,6 +105,8 @@ abp cli update
abp cli update --preview abp cli update --preview
abp cli update --version 1.0.0 abp cli update --version 1.0.0
abp cli remove abp cli remove
abp cli check-version
abp cli clear-cache
```` ````
### new ### new

216
docs/en/docs-nav.json

@ -2,8 +2,11 @@
"items": [ "items": [
{ {
"text": "Get started", "text": "Get started",
"path": "get-started",
"items": [ "items": [
{
"text": "Overview",
"path": "get-started"
},
{ {
"text": "Single-layer solution", "text": "Single-layer solution",
"path": "get-started/single-layer-web-application.md" "path": "get-started/single-layer-web-application.md"
@ -42,10 +45,17 @@
{ {
"text": "Tutorials", "text": "Tutorials",
"items": [ "items": [
{
"text": "Overview",
"path": "tutorials"
},
{ {
"text": "TODO application", "text": "TODO application",
"path": "tutorials/todo",
"items": [ "items": [
{
"text": "Overview",
"path": "tutorials/todo"
},
{ {
"text": "Single-layer solution", "text": "Single-layer solution",
"path": "tutorials/todo/single-layer" "path": "tutorials/todo/single-layer"
@ -61,7 +71,7 @@
"items": [ "items": [
{ {
"text": "Overview", "text": "Overview",
"path": "tutorials/book-store/overview.md" "path": "tutorials/book-store"
}, },
{ {
"text": "1: Creating the server side", "text": "1: Creating the server side",
@ -114,10 +124,17 @@
{ {
"text": "Tools", "text": "Tools",
"items": [ "items": [
{
"text": "Overview",
"path": "tools.md"
},
{ {
"text": "ABP CLI", "text": "ABP CLI",
"path": "cli",
"items": [ "items": [
{
"text": "Overview",
"path": "cli"
},
{ {
"text": "Examples for the new command", "text": "Examples for the new command",
"path": "cli/new-command-samples.md" "path": "cli/new-command-samples.md"
@ -126,19 +143,22 @@
}, },
{ {
"text": "ABP Studio", "text": "ABP Studio",
"path": "studio",
"items": [ "items": [
{ {
"text": "Installation", "text": "Overview",
"path": "studio/installation.md" "path": "studio"
}, },
{ {
"text": "Overview", "text": "Installation",
"path": "studio/overview.md" "path": "studio/installation.md"
}, },
{ {
"text": "Fundamentals", "text": "Fundamentals",
"items": [ "items": [
{
"text": "Overview",
"path": "studio/overview.md"
},
{ {
"text": "Solution Explorer", "text": "Solution Explorer",
"path": "studio/solution-explorer.md" "path": "studio/solution-explorer.md"
@ -171,7 +191,7 @@
"text": "ABP Suite", "text": "ABP Suite",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "suite" "path": "suite"
}, },
{ {
@ -192,8 +212,11 @@
}, },
{ {
"text": "Generating CRUD Page", "text": "Generating CRUD Page",
"path": "suite/generating-crud-page.md",
"items": [ "items": [
{
"text": "Overview",
"path": "suite/generating-crud-page.md"
},
{ {
"text": "Creating Many-To-Many Relationship", "text": "Creating Many-To-Many Relationship",
"path": "suite/creating-many-to-many-relationship.md" "path": "suite/creating-many-to-many-relationship.md"
@ -242,14 +265,21 @@
{ {
"text": "Fundamentals", "text": "Fundamentals",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/fundamentals"
},
{ {
"text": "Application Startup", "text": "Application Startup",
"path": "framework/fundamentals/application-startup.md" "path": "framework/fundamentals/application-startup.md"
}, },
{ {
"text": "Authorization", "text": "Authorization",
"path": "framework/fundamentals/authorization.md",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/fundamentals/authorization.md"
},
{ {
"text": "Dynamic Claims", "text": "Dynamic Claims",
"path": "framework/fundamentals/dynamic-claims.md" "path": "framework/fundamentals/dynamic-claims.md"
@ -258,8 +288,11 @@
}, },
{ {
"text": "Caching", "text": "Caching",
"path": "framework/fundamentals/caching.md",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/fundamentals/caching.md"
},
{ {
"text": "Redis Cache", "text": "Redis Cache",
"path": "framework/fundamentals/redis-cache.md" "path": "framework/fundamentals/redis-cache.md"
@ -276,8 +309,11 @@
}, },
{ {
"text": "Dependency Injection", "text": "Dependency Injection",
"path": "framework/fundamentals/dependency-injection.md",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/fundamentals/dependency-injection.md"
},
{ {
"text": "AutoFac Integration", "text": "AutoFac Integration",
"path": "framework/fundamentals/autofac-integration.md" "path": "framework/fundamentals/autofac-integration.md"
@ -306,8 +342,11 @@
}, },
{ {
"text": "Validation", "text": "Validation",
"path": "framework/fundamentals/validation.md",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/fundamentals/validation.md"
},
{ {
"text": "FluentValidation Integration", "text": "FluentValidation Integration",
"path": "framework/fundamentals/fluent-validation.md" "path": "framework/fundamentals/fluent-validation.md"
@ -319,14 +358,21 @@
{ {
"text": "Infrastructure", "text": "Infrastructure",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/infrastructure"
},
{ {
"text": "Audit Logging", "text": "Audit Logging",
"path": "framework/infrastructure/audit-logging.md" "path": "framework/infrastructure/audit-logging.md"
}, },
{ {
"text": "Background Jobs", "text": "Background Jobs",
"path": "framework/infrastructure/background-jobs",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/infrastructure/background-jobs"
},
{ {
"text": "Hangfire Integration", "text": "Hangfire Integration",
"path": "framework/infrastructure/background-jobs/hangfire.md" "path": "framework/infrastructure/background-jobs/hangfire.md"
@ -343,8 +389,11 @@
}, },
{ {
"text": "Background Workers", "text": "Background Workers",
"path": "framework/infrastructure/background-workers",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/infrastructure/background-workers"
},
{ {
"text": "Quartz Integration", "text": "Quartz Integration",
"path": "framework/infrastructure/background-workers/quartz.md" "path": "framework/infrastructure/background-workers/quartz.md"
@ -359,7 +408,7 @@
"text": "BLOB Storing", "text": "BLOB Storing",
"items": [ "items": [
{ {
"text": "BLOB Storing System", "text": "Overview",
"path": "framework/infrastructure/blob-storing" "path": "framework/infrastructure/blob-storing"
}, },
{ {
@ -429,7 +478,7 @@
"text": "Email Sending", "text": "Email Sending",
"items": [ "items": [
{ {
"text": "Email Sending System", "text": "Overview",
"path": "framework/infrastructure/emailing.md" "path": "framework/infrastructure/emailing.md"
}, },
{ {
@ -446,7 +495,7 @@
"text": "Event Bus", "text": "Event Bus",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/infrastructure/event-bus" "path": "framework/infrastructure/event-bus"
}, },
{ {
@ -455,8 +504,11 @@
}, },
{ {
"text": "Distributed Event Bus", "text": "Distributed Event Bus",
"path": "framework/infrastructure/event-bus/distributed",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/infrastructure/event-bus/distributed"
},
{ {
"text": "Azure Service Bus Integration", "text": "Azure Service Bus Integration",
"path": "framework/infrastructure/event-bus/distributed/azure.md" "path": "framework/infrastructure/event-bus/distributed/azure.md"
@ -519,8 +571,11 @@
}, },
{ {
"text": "Text Templating", "text": "Text Templating",
"path": "framework/infrastructure/text-templating",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/infrastructure/text-templating"
},
{ {
"text": "Razor Integration", "text": "Razor Integration",
"path": "framework/infrastructure/text-templating/razor.md" "path": "framework/infrastructure/text-templating/razor.md"
@ -543,13 +598,16 @@
}, },
{ {
"text": "Architecture", "text": "Architecture",
"path": "framework/architecture",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/architecture"
},
{ {
"text": "Best Practices", "text": "Best Practices",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/architecture/best-practices" "path": "framework/architecture/best-practices"
}, },
{ {
@ -559,6 +617,10 @@
{ {
"text": "Domain Layer", "text": "Domain Layer",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/architecture/best-practices/domain-layer-overview.md"
},
{ {
"text": "Entities", "text": "Entities",
"path": "framework/architecture/best-practices/entities.md" "path": "framework/architecture/best-practices/entities.md"
@ -576,6 +638,10 @@
{ {
"text": "Application Layer", "text": "Application Layer",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/architecture/best-practices/application-layer-overview.md"
},
{ {
"text": "Application Services", "text": "Application Services",
"path": "framework/architecture/best-practices/application-services.md" "path": "framework/architecture/best-practices/application-services.md"
@ -589,6 +655,10 @@
{ {
"text": "Data Access", "text": "Data Access",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/architecture/best-practices/data-access-overview.md"
},
{ {
"text": "Entity Framework Core Integration", "text": "Entity Framework Core Integration",
"path": "framework/architecture/best-practices/entity-framework-core-integration.md" "path": "framework/architecture/best-practices/entity-framework-core-integration.md"
@ -605,7 +675,7 @@
"text": "Modularity", "text": "Modularity",
"items": [ "items": [
{ {
"text": "Basics", "text": "Overview",
"path": "framework/architecture/modularity/basics.md" "path": "framework/architecture/modularity/basics.md"
}, },
{ {
@ -616,7 +686,7 @@
"text": "Customizing/Extending Modules", "text": "Customizing/Extending Modules",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/architecture/modularity/extending/customizing-application-modules-guide.md" "path": "framework/architecture/modularity/extending/customizing-application-modules-guide.md"
}, },
{ {
@ -639,12 +709,16 @@
"text": "Domain Driven Design", "text": "Domain Driven Design",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/architecture/domain-driven-design" "path": "framework/architecture/domain-driven-design"
}, },
{ {
"text": "Domain Layer", "text": "Domain Layer",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/architecture/domain-driven-design/domain-layer.md"
},
{ {
"text": "Entities & Aggregate Roots", "text": "Entities & Aggregate Roots",
"path": "framework/architecture/domain-driven-design/entities.md" "path": "framework/architecture/domain-driven-design/entities.md"
@ -670,6 +744,10 @@
{ {
"text": "Application Layer", "text": "Application Layer",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/architecture/domain-driven-design/application-layer.md"
},
{ {
"text": "Application Services", "text": "Application Services",
"path": "framework/architecture/domain-driven-design/application-services.md" "path": "framework/architecture/domain-driven-design/application-services.md"
@ -703,9 +781,17 @@
{ {
"text": "API Development", "text": "API Development",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/api-development"
},
{ {
"text": "ABP Endpoints", "text": "ABP Endpoints",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/api-development/standard-apis"
},
{ {
"text": "Application Configuration", "text": "Application Configuration",
"path": "framework/api-development/standard-apis/configuration.md" "path": "framework/api-development/standard-apis/configuration.md"
@ -745,12 +831,16 @@
{ {
"text": "User Interface", "text": "User Interface",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/ui"
},
{ {
"text": "MVC / Razor Pages", "text": "MVC / Razor Pages",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/mvc-razor-pages/overall.md" "path": "framework/ui/mvc-razor-pages"
}, },
{ {
"text": "Navigation / Menus", "text": "Navigation / Menus",
@ -794,8 +884,11 @@
}, },
{ {
"text": "Tag Helpers", "text": "Tag Helpers",
"path": "framework/ui/mvc-razor-pages/tag-helpers",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/ui/mvc-razor-pages/tag-helpers"
},
{ {
"text": "Form Elements", "text": "Form Elements",
"path": "framework/ui/mvc-razor-pages/tag-helpers/form-elements.md" "path": "framework/ui/mvc-razor-pages/tag-helpers/form-elements.md"
@ -832,8 +925,11 @@
}, },
{ {
"text": "Theming", "text": "Theming",
"path": "framework/ui/mvc-razor-pages/theming.md",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/ui/mvc-razor-pages/theming.md"
},
{ {
"text": "The Basic Theme", "text": "The Basic Theme",
"path": "framework/ui/mvc-razor-pages/basic-theme.md" "path": "framework/ui/mvc-razor-pages/basic-theme.md"
@ -848,7 +944,7 @@
"text": "JavaScript API", "text": "JavaScript API",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/mvc-razor-pages/javascript-api" "path": "framework/ui/mvc-razor-pages/javascript-api"
}, },
{ {
@ -909,7 +1005,7 @@
"text": "Customize/Extend the UI", "text": "Customize/Extend the UI",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/mvc-razor-pages/customization-user-interface.md" "path": "framework/ui/mvc-razor-pages/customization-user-interface.md"
}, },
{ {
@ -941,7 +1037,7 @@
"text": "Blazor", "text": "Blazor",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/blazor/overall.md" "path": "framework/ui/blazor/overall.md"
}, },
{ {
@ -960,7 +1056,7 @@
"text": "Theming", "text": "Theming",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/blazor/theming.md" "path": "framework/ui/blazor/theming.md"
}, },
{ {
@ -1272,7 +1368,7 @@
"text": "Theming", "text": "Theming",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/angular/theming.md" "path": "framework/ui/angular/theming.md"
}, },
{ {
@ -1305,7 +1401,7 @@
"text": "Extensions", "text": "Extensions",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/angular/extensions-overall.md" "path": "framework/ui/angular/extensions-overall.md"
}, },
{ {
@ -1355,7 +1451,7 @@
"text": "React Native", "text": "React Native",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/react-native" "path": "framework/ui/react-native"
} }
] ]
@ -1364,7 +1460,7 @@
"text": "MAUI", "text": "MAUI",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/ui/maui" "path": "framework/ui/maui"
} }
] ]
@ -1393,13 +1489,16 @@
"text": "Data Access", "text": "Data Access",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "framework/data" "path": "framework/data"
}, },
{ {
"text": "Entity Framework Core", "text": "Entity Framework Core",
"path": "framework/data/entity-framework-core",
"items": [ "items": [
{
"text": "Overview",
"path": "framework/data/entity-framework-core"
},
{ {
"text": "Database Migrations", "text": "Database Migrations",
"path": "framework/data/entity-framework-core/migrations.md" "path": "framework/data/entity-framework-core/migrations.md"
@ -1467,7 +1566,7 @@
"text": "Solution Templates", "text": "Solution Templates",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "solution-templates" "path": "solution-templates"
}, },
{ {
@ -1492,7 +1591,7 @@
"text": "Application Modules", "text": "Application Modules",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "modules" "path": "modules"
}, },
{ {
@ -1557,8 +1656,11 @@
}, },
{ {
"text": "IdentityServer", "text": "IdentityServer",
"path": "modules/identity-server.md",
"items": [ "items": [
{
"text": "Overview",
"path": "modules/identity-server.md"
},
{ {
"text": "IdentityServer Migration Guide", "text": "IdentityServer Migration Guide",
"path": "release-info/migration-guides/identityserver4-step-by-step.md" "path": "release-info/migration-guides/identityserver4-step-by-step.md"
@ -1575,8 +1677,11 @@
}, },
{ {
"text": "OpenIddict", "text": "OpenIddict",
"path": "modules/openiddict.md",
"items": [ "items": [
{
"text": "Overview",
"path": "modules/openiddict.md"
},
{ {
"text": "OpenIddict Migration Guide", "text": "OpenIddict Migration Guide",
"path": "release-info/migration-guides/openiddict-step-by-step.md" "path": "release-info/migration-guides/openiddict-step-by-step.md"
@ -1633,13 +1738,17 @@
{ {
"text": "UI Themes", "text": "UI Themes",
"items": [ "items": [
{
"text": "Overview",
"path": "ui-themes"
},
{ {
"text": "The Basic Theme", "text": "The Basic Theme",
"path": "framework/ui/mvc-razor-pages/basic-theme.md" "path": "framework/ui/mvc-razor-pages/basic-theme.md"
}, },
{ {
"text": "LeptonX Theme", "text": "LeptonX Theme",
"path": "ui-themes/lepton-x/index.md" "path": "ui-themes/lepton-x"
} }
] ]
}, },
@ -1647,7 +1756,7 @@
"text": "Testing", "text": "Testing",
"items": [ "items": [
{ {
"text": "Overall", "text": "Overview",
"path": "testing/overall.md" "path": "testing/overall.md"
}, },
{ {
@ -1666,8 +1775,11 @@
}, },
{ {
"text": "Deployment", "text": "Deployment",
"path": "deployment",
"items": [ "items": [
{
"text": "Overview",
"path": "deployment"
},
{ {
"text": "Configuring SSL certificate(HTTPS)", "text": "Configuring SSL certificate(HTTPS)",
"path": "deployment/ssl.md" "path": "deployment/ssl.md"
@ -1718,6 +1830,10 @@
{ {
"text": "Books", "text": "Books",
"items": [ "items": [
{
"text": "Overview",
"path": "https://abp.io/books"
},
{ {
"text": "Mastering ABP Framework", "text": "Mastering ABP Framework",
"path": "https://abp.io/books/mastering-abp-framework" "path": "https://abp.io/books/mastering-abp-framework"
@ -1731,6 +1847,10 @@
{ {
"text": "Release Information", "text": "Release Information",
"items": [ "items": [
{
"text": "Overview",
"path": "release-info"
},
{ {
"text": "Release Notes", "text": "Release Notes",
"path": "release-info/release-notes.md" "path": "release-info/release-notes.md"

2
docs/en/dynamic-proxying-interceptors.md

@ -1,4 +1,4 @@
## Dynamic Proxying / Interceptors # Dynamic Proxying / Interceptors
This document is planned to be written later. This document is planned to be written later.

11
docs/en/framework/api-development/index.md

@ -0,0 +1,11 @@
## API Development
The following documents explain the concepts, infrastructure and integrations to build HTTP APIs with ABP:
* [ABP Endpoints](./standard-apis/overview.md)
* [API Versioning](./versioning.md)
* [Auto API Controllers](./auto-controllers.md)
* [Dynamic C# API Clients](./dynamic-csharp-clients.md)
* [Integration Services](./integration-services.md)
* [Static C# API Clients](./static-csharp-clients.md)
* [Swagger Integration](./swagger.md)

6
docs/en/framework/api-development/standard-apis/index.md

@ -0,0 +1,6 @@
## Standard HTTP API Endpoints
ABP provides some pre-built and standard endpoints that contains useful information about the application or service, such as localization entries and settings. Here, is the list of the pre-built endpoints:
* [Application Configuration](./configuration.md)
* [Application Localization](./localization.md)

6
docs/en/framework/architecture/best-practices/application-layer-overview.md

@ -0,0 +1,6 @@
## Best Practices: Application Layer
The following documents suggest some best-practices that you can use while implementing the application layer of your solution by following the Domain Driven Design principles:
* [Application Services](./application-services.md)
* [Data Transfer Objects](./data-transfer-objects.md)

2
docs/en/framework/architecture/best-practices/application-services.md

@ -1,4 +1,4 @@
## Application Services Best Practices & Conventions # Application Services Best Practices & Conventions
* **Do** create an application service for each **aggregate root**. * **Do** create an application service for each **aggregate root**.

6
docs/en/framework/architecture/best-practices/data-access-overview.md

@ -0,0 +1,6 @@
## Best Practices: Data Access
The following documents suggest some best-practices that you can use while implementing the database integration layer of your solution by following Domain Driven Design principles:
* [Entity Framework Core](./entity-framework-core-integration.md)
* [MongoDB](./mongodb-integration.md)

2
docs/en/framework/architecture/best-practices/data-transfer-objects.md

@ -1,4 +1,4 @@
## Data Transfer Objects Best Practices & Conventions # Data Transfer Objects Best Practices & Conventions
* **Do** define DTOs in the **application contracts** package. * **Do** define DTOs in the **application contracts** package.
* **Do** inherit from the pre-built **base DTO classes** where possible and necessary (like `EntityDto<TKey>`, `CreationAuditedEntityDto<TKey>`, `AuditedEntityDto<TKey>`, `FullAuditedEntityDto<TKey>` and so on). * **Do** inherit from the pre-built **base DTO classes** where possible and necessary (like `EntityDto<TKey>`, `CreationAuditedEntityDto<TKey>`, `AuditedEntityDto<TKey>`, `FullAuditedEntityDto<TKey>` and so on).

7
docs/en/framework/architecture/best-practices/domain-layer-overview.md

@ -0,0 +1,7 @@
## Best Practices: Domain Layer
The following documents suggest some best-practices that you can use while implementing the domain layer of your solution by following the Domain Driven Design principles:
* [Entities](./entities.md)
* [Repositories](./repositories.md)
* [Domain Services](./domain-services.md)

2
docs/en/framework/architecture/best-practices/domain-services.md

@ -1,4 +1,4 @@
## Domain Services Best Practices & Conventions # Domain Services Best Practices & Conventions
### Domain Service ### Domain Service

2
docs/en/framework/architecture/best-practices/entities.md

@ -1,4 +1,4 @@
## Entity Best Practices & Conventions # Entity Best Practices & Conventions
### Entities ### Entities

2
docs/en/framework/architecture/best-practices/entity-framework-core-integration.md

@ -1,4 +1,4 @@
## Entity Framework Core Integration Best Practices # Entity Framework Core Integration Best Practices
> See [Entity Framework Core Integration document](../../data/entity-framework-core) for the basics of the EF Core integration. > See [Entity Framework Core Integration document](../../data/entity-framework-core) for the basics of the EF Core integration.

2
docs/en/framework/architecture/best-practices/index.md

@ -1,4 +1,4 @@
## Module Development Best Practices & Conventions # Module Development Best Practices & Conventions
### Introduction ### Introduction

2
docs/en/framework/architecture/best-practices/module-architecture.md

@ -1,4 +1,4 @@
## Module Architecture Best Practices & Conventions # Module Architecture Best Practices & Conventions
### Solution Structure ### Solution Structure

2
docs/en/framework/architecture/best-practices/mongodb-integration.md

@ -1,4 +1,4 @@
## MongoDB Integration # MongoDB Integration
* Do define a separated `MongoDbContext` interface and class for each module. * Do define a separated `MongoDbContext` interface and class for each module.

2
docs/en/framework/architecture/best-practices/repositories.md

@ -1,4 +1,4 @@
## Repository Best Practices & Conventions # Repository Best Practices & Conventions
### Repository Interfaces ### Repository Interfaces

7
docs/en/framework/architecture/domain-driven-design/application-layer.md

@ -0,0 +1,7 @@
## Domain Driven Design: Application Layer
Application Layer mediates between the Presentation and Domain Layers. Orchestrates business objects to perform specific application tasks and implements use cases as the application logic. Here, is the list of the building blocks of the Application Layer:
* [Application Services](./application-services.md)
* [Data Transfer Objects](./data-transfer-objects.md)
* [Unit of Work](./unit-of-work.md)

9
docs/en/framework/architecture/domain-driven-design/domain-layer.md

@ -0,0 +1,9 @@
## Domain Driven Design: Domain Layer
Domain Layer contains business objects and the core (domain) business rules of the application and it's the heart of the application. Here, is the list of building blocks of the Domain Layer:
* [Entities & Aggregate Roots](./entities.md)
* [Value Objects](./value-objects.md)
* [Repositories](./repositories.md)
* [Domain Services](./domain-services.md)
* [Specifications](./specifications.md)

2
docs/en/framework/fundamentals/application-startup.md

@ -1,4 +1,4 @@
## ABP Application Startup # ABP Application Startup
You typically use the [ABP CLI](../../cli)'s `abp new` command to [get started](../../get-started/layered-web-application.md) with one of the pre-built [startup solution templates](../../solution-templates). When you do that, you generally don't need to know the details of how the ABP is integrated with your application or how it is configured and initialized. The startup template also comes with the fundamental ABP packages and [application modules](../../modules) are pre-installed and configured for you. You typically use the [ABP CLI](../../cli)'s `abp new` command to [get started](../../get-started/layered-web-application.md) with one of the pre-built [startup solution templates](../../solution-templates). When you do that, you generally don't need to know the details of how the ABP is integrated with your application or how it is configured and initialized. The startup template also comes with the fundamental ABP packages and [application modules](../../modules) are pre-installed and configured for you.

16
docs/en/framework/fundamentals/index.md

@ -0,0 +1,16 @@
## ABP Fundamentals: Overview
The following documents explains the fundamental building blocks to create ABP solutions:
* [Application Startup](./application-startup.md)
* [Authorization](./authorization.md)
* [Caching](./caching.md)
* [Configuration](./configuration.md)
* [Connection Strings](./connection-strings.md)
* [Dependency Injection](./dependency-injection.md)
* [Exception Handling](./exception-handling.md)
* [Localization](./localization.md)
* [Logging](./logging.md)
* [Object Extensions](./object-extensions.md)
* [Options](./options.md)
* [Validation](./validation.md)

2
docs/en/framework/infrastructure/concurrency-check.md

@ -1,4 +1,4 @@
## Concurrency Check # Concurrency Check
### Introduction ### Introduction

31
docs/en/framework/infrastructure/index.md

@ -0,0 +1,31 @@
## ABP Infrastructure
ABP provides a complete infrastructure for creating real world software solutions with modern architectures based on the .NET platform. Each of the following documents explains an infrastructure feature:
* [Audit Logging](./audit-logging.md)
* [Background Jobs](./background-jobs/index.md)
* [Background Workers](./background-workers/index.md)
* [BLOB Storing](./blob-storing/index.md)
* [Cancellation Token Provider](./cancellation-token-provider.md)
* [CSRF/XSRF & Anti Forgery](./csrf-anti-forgery.md)
* [Concurrency Check](./concurrency-check.md)
* [Current User](./current-user.md)
* [Data Filtering](./data-filtering.md)
* [Data Seeding](./data-seeding.md)
* [Distributing Locking](./distributed-locking.md)
* [Email Sending](./emailing.md)
* [Entity Cache](./entity-cache.md)
* [Event Bus](./event-bus/index.md)
* [Features](./features.md)
* [Global Features](./global-features.md)
* [GUID Generation](./guid-generation.md)
* [Image Manipulation](./image-manipulation.md)
* [JSON](./json.md)
* [Object to Object Mapping](./object-to-object-mapping.md)
* [Settings](./settings.md)
* [Simple State Checker](./simple-state-checker.md)
* [SMS Sending](./sms-sending.md)
* [String Encryption](./string-encryption.md)
* [Text Templating](./text-templating/index.md)
* [Timing](./timing.md)
* [Virtual File System](./virtual-file-system.md)

2
docs/en/framework/ui/angular/authorization.md

@ -1,4 +1,4 @@
## Authorization in Angular UI # Authorization in Angular UI
OAuth is preconfigured in Angular application templates. So, when you start a project using the CLI (or Suite, for that matter), authorization already works. ABP Angular UI packages are using [angular-oauth2-oidc library](https://github.com/manfredsteyer/angular-oauth2-oidc#logging-in) for managing OAuth in the Angular client. OAuth is preconfigured in Angular application templates. So, when you start a project using the CLI (or Suite, for that matter), authorization already works. ABP Angular UI packages are using [angular-oauth2-oidc library](https://github.com/manfredsteyer/angular-oauth2-oidc#logging-in) for managing OAuth in the Angular client.
You can find **OAuth configuration** in the _environment.ts_ files. You can find **OAuth configuration** in the _environment.ts_ files.

2
docs/en/framework/ui/angular/breadcrumb.md

@ -1,4 +1,4 @@
## Breadcrumb Component # Breadcrumb Component
ABP provides a component that listens to the angular router's `NavigationEnd` ABP provides a component that listens to the angular router's `NavigationEnd`
event and creates inputs for `BreadcrumbItemsComponent`. This component is used in event and creates inputs for `BreadcrumbItemsComponent`. This component is used in

2
docs/en/framework/ui/angular/extensions-overall.md

@ -1,4 +1,4 @@
## Angular UI Extensions # Angular UI Extensions
Angular UI extensions system allows you to add a new action to the actions menu, a new column to the data table, a new action to the toolbar of a page, and add a new field to the create and/or edit forms. Angular UI extensions system allows you to add a new action to the actions menu, a new column to the data table, a new action to the toolbar of a page, and add a new field to the create and/or edit forms.

4
docs/en/framework/ui/angular/quick-start.md

@ -4,8 +4,8 @@
Please follow the steps below to prepare your development environment for Angular. Please follow the steps below to prepare your development environment for Angular.
1. **Install Node.js:** Please visit [Node.js downloads page](https://nodejs.org/en/download/) and download proper Node.js v16 or v18 installer for your OS. An alternative is to install [NVM](https://github.com/nvm-sh/nvm) and use it to have multiple versions of Node.js in your operating system. 1. **Install Node.js:** Please visit [Node.js downloads page](https://nodejs.org/en/download/) and download proper Node.js `v18.19+` installer for your OS. An alternative is to install [NVM](https://github.com/nvm-sh/nvm) and use it to have multiple versions of Node.js in your operating system.
2. **[Optional] Install Yarn:** You may install Yarn v1 (not v2) following the instructions on [the installation page](https://classic.yarnpkg.com/en/docs/install). Yarn v1 delivers an arguably better developer experience compared to npm v6 and below. You may skip this step and work with npm, which is built-in in Node.js, instead. 2. **[Optional] Install Yarn:** You may install Yarn v1.22+ (not v2) following the instructions on [the installation page](https://classic.yarnpkg.com/en/docs/install). Yarn v1 delivers an arguably better developer experience compared to npm v10 and below. You may skip this step and work with npm, which is built-in in Node.js, instead.
3. **[Optional] Install VS Code:** [VS Code](https://code.visualstudio.com/) is a free, open-source IDE which works seamlessly with TypeScript. Although you can use any IDE including Visual Studio or Rider, VS Code will most likely deliver the best developer experience when it comes to Angular projects. ABP project templates even contain plugin recommendations for VS Code users, which VS Code will ask you to install when you open the Angular project folder. Here is a list of recommended extensions: 3. **[Optional] Install VS Code:** [VS Code](https://code.visualstudio.com/) is a free, open-source IDE which works seamlessly with TypeScript. Although you can use any IDE including Visual Studio or Rider, VS Code will most likely deliver the best developer experience when it comes to Angular projects. ABP project templates even contain plugin recommendations for VS Code users, which VS Code will ask you to install when you open the Angular project folder. Here is a list of recommended extensions:
- [Angular Language Service](https://marketplace.visualstudio.com/items?itemName=angular.ng-template) - [Angular Language Service](https://marketplace.visualstudio.com/items?itemName=angular.ng-template)
- [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)

2
docs/en/framework/ui/angular/service-proxies.md

@ -1,4 +1,4 @@
## Service Proxies # Service Proxies
Calling a REST endpoint from Angular applications is common. We usually create **services** matching server-side controllers and **interfaces** matching [DTOs](../../architecture/domain-driven-design/data-transfer-objects.md) to interact with the server. This often results in manually transforming C# code into TypeScript equivalents and that is unfortunate, if not intolerable. Calling a REST endpoint from Angular applications is common. We usually create **services** matching server-side controllers and **interfaces** matching [DTOs](../../architecture/domain-driven-design/data-transfer-objects.md) to interact with the server. This often results in manually transforming C# code into TypeScript equivalents and that is unfortunate, if not intolerable.

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

@ -0,0 +1,9 @@
## ABP UI Options
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:
* [MVC / Razor Pages](./mvc-razor-pages/overall.md)
* [Blazor](./blazor/overall.md)
* [Angular](./angular/quick-start.md)
* [React Native](./react-native/index.md)
* [MAUI](./maui/index.md)

2
docs/en/framework/ui/mvc-razor-pages/client-side-package-management.md

@ -1,5 +1,5 @@
## ASP.NET Core MVC Client Side Package Management # ASP.NET Core MVC Client Side Package Management
ABP can work with any type of client side package management systems. You can even decide to use no package management system and manage your dependencies manually. ABP can work with any type of client side package management systems. You can even decide to use no package management system and manage your dependencies manually.

4
docs/en/get-started/layered-web-application.md

@ -22,8 +22,8 @@ The following tools should be installed on your development machine:
* [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) (v17.3+) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/). <sup id="a-editor">[1](#f-editor)</sup> * [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) (v17.3+) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/). <sup id="a-editor">[1](#f-editor)</sup>
* [.NET 8.0+](https://dotnet.microsoft.com/en-us/download/dotnet) * [.NET 8.0+](https://dotnet.microsoft.com/en-us/download/dotnet)
{{ if UI != "Blazor" }} {{ if UI != "Blazor" }}
* [Node v16 or v18](https://nodejs.org/) * [Node v18.19+](https://nodejs.org/)
* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) <sup id="a-yarn">[2](#f-yarn)</sup> or npm v6+ (already installed with Node) * [Yarn v1.22+ (not v2)](https://classic.yarnpkg.com/en/docs/install) <sup id="a-yarn">[2](#f-yarn)</sup> or npm v10+ (already installed with Node)
{{ end }} {{ end }}
{{ if Tiered == "Yes" }} {{ if Tiered == "Yes" }}
* [Redis](https://redis.io/) (as the [distributed cache](Caching.md)). * [Redis](https://redis.io/) (as the [distributed cache](Caching.md)).

4
docs/en/get-started/single-layer-web-application.md

@ -21,8 +21,8 @@ The following tools should be installed on your development machine:
* [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) (v17.3+) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/). <sup id="a-editor">[1](#f-editor)</sup> * [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) (v17.3+) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/). <sup id="a-editor">[1](#f-editor)</sup>
* [.NET 8.0+](https://dotnet.microsoft.com/en-us/download/dotnet) * [.NET 8.0+](https://dotnet.microsoft.com/en-us/download/dotnet)
{{ if UI != "Blazor" }} {{ if UI != "Blazor" }}
* [Node v16 or v18](https://nodejs.org/) * [Node v18.19+](https://nodejs.org/)
* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) <sup id="a-yarn">[2](#f-yarn)</sup> or npm v6+ (already installed with Node) * [Yarn v1.22+ (not v2)](https://classic.yarnpkg.com/en/docs/install) <sup id="a-yarn">[2](#f-yarn)</sup> or npm v10+ (already installed with Node)
{{ end }} {{ end }}
{{ if Tiered == "Yes" }} {{ if Tiered == "Yes" }}
* [Redis](https://redis.io/) (as the [distributed cache](Caching.md)). * [Redis](https://redis.io/) (as the [distributed cache](Caching.md)).

1
docs/en/guides/migrating-from-open-source.md

@ -38,7 +38,6 @@ And install the following modules to your solution:
- Volo.Abp.LanguageManagement - Volo.Abp.LanguageManagement
- Volo.Abp.TextTemplateManagement - Volo.Abp.TextTemplateManagement
- Volo.FileManagement - Volo.FileManagement
- Volo.Chat
- Volo.Abp.Gdpr - Volo.Abp.Gdpr
- Volo.Abp.LeptonXTheme - Volo.Abp.LeptonXTheme

9
docs/en/release-info/index.md

@ -0,0 +1,9 @@
## Release Information
* [Release Notes](./release-notes.md)
* [Migration Guides](./migration-guides/index.md)
* [Road Map](./road-map.md)
* [Upgrading](./upgrading.md)
* [Preview Releases](./previews.md)
* [Nightly Releases](./nightly-builds.md)
* [Official Packages](https://abp.io/packages)

4
docs/en/release-info/migration-guides/abp-8-3.md

@ -49,6 +49,10 @@ However, notice this package is used by the `@abp/aspnetcore.mvc.ui.theme.shared
See the PR for more info: https://github.com/abpframework/abp/pull/19340 See the PR for more info: https://github.com/abpframework/abp/pull/19340
### Angular UI
We wish to formally inform you that ABP version 8.3 has been upgraded to incorporate Angular version 18. Consequently, we recommend migrating your application to [Angular v18](https://angular.dev/update-guide) to ensure compatibility.
## PRO ## PRO
> Please check the **Open-Source (Framework)** section before reading this section. The listed topics might affect your application and you might need to take care of them. > Please check the **Open-Source (Framework)** section before reading this section. The listed topics might affect your application and you might need to take care of them.

2
docs/en/studio/installation.md

@ -8,7 +8,7 @@
Before you begin the installation process for ABP Studio, ensure that your system meets the following pre-requirements: Before you begin the installation process for ABP Studio, ensure that your system meets the following pre-requirements:
### Node ### Node
Make sure [Node.js](https://nodejs.org/en) is installed on your system. If you have not installed Node.js, you can download the `v16` or `v18` version from the official [Node.js website](https://nodejs.org/en/download/prebuilt-installer). Make sure [Node.js](https://nodejs.org/en) is installed on your system. If you have not installed Node.js, you can download the `v18.19+` version from the official [Node.js website](https://nodejs.org/en/download/prebuilt-installer).
### WireGuard (Optional) ### WireGuard (Optional)
ABP Studio needs [WireGuard](https://www.wireguard.com/) for Kubernetes operations. You can find the installation instructions for your specific operating system below: ABP Studio needs [WireGuard](https://www.wireguard.com/) for Kubernetes operations. You can find the installation instructions for your specific operating system below:

7
docs/en/tools.md

@ -0,0 +1,7 @@
## Tools
ABP provides a comprehensive set of tools designed to enhance the development experience and improve productivity:
* [ABP CLI](./cli/index.md): Command line tool to perform some common operations for ABP based solutions.
* [ABP Suite](./suite/index.md): A complementary tool that allows you to build web pages in a matter of minutes.
* [ABP Studio](./studio/index.md): A cross-platform desktop application for ABP and .NET developers. Aims to provide a comfortable development environment for you by automating things, providing insights about your solution, making develop, run, browse, monitor, trace and deploy your solutions much easier.

0
docs/en/tutorials/book-store/overview.md → docs/en/tutorials/book-store/index.md

6
docs/en/tutorials/index.md

@ -0,0 +1,6 @@
## ABP Tutorials
The following guides explains how to build ABP based applications:
* [TODO Application](todo/index.md): This is a single-part, quick-start tutorial to build a simple application with ABP. Start with this tutorial if you want to quickly understand how ABP works.
* [Book Store Application](book-store/overview.md): This is a multi-part, complete tutorial to build a bookstore application with ABP. Start with this tutorial if you want to create a layered solution with ABP and apply DDD best practices.

2
docs/en/tutorials/todo/layered/index.md

@ -53,7 +53,7 @@ This documentation has a video tutorial on **YouTube**!! You can watch it here:
## Pre-Requirements ## Pre-Requirements
* An IDE (e.g. [Visual Studio](https://visualstudio.microsoft.com/vs/)) that supports [.NET 8.0+](https://dotnet.microsoft.com/download/dotnet) development. * An IDE (e.g. [Visual Studio](https://visualstudio.microsoft.com/vs/)) that supports [.NET 8.0+](https://dotnet.microsoft.com/download/dotnet) development.
* [Node v16.x](https://nodejs.org/) * [Node v18.19+](https://nodejs.org/)
{{if DB=="Mongo"}} {{if DB=="Mongo"}}

2
docs/en/tutorials/todo/single-layer/index.md

@ -49,7 +49,7 @@ This documentation has a video tutorial on **YouTube**!! You can watch it here:
## Pre-Requirements ## Pre-Requirements
* An IDE (e.g. [Visual Studio](https://visualstudio.microsoft.com/vs/)) that supports [.NET 8.0+](https://dotnet.microsoft.com/download/dotnet) development. * An IDE (e.g. [Visual Studio](https://visualstudio.microsoft.com/vs/)) that supports [.NET 8.0+](https://dotnet.microsoft.com/download/dotnet) development.
* [Node v16.x](https://nodejs.org/) * [Node v18.19+](https://nodejs.org/)
{{if DB=="Mongo"}} {{if DB=="Mongo"}}

2
docs/en/ui-themes/lepton-x/angular-customization.md

@ -1,4 +1,4 @@
## Customization # Customization
### Layouts ### Layouts

2
docs/en/ui-themes/lepton-x/angular/how-to-add-a-new-variation-to-lepton-x-for-angular.md

@ -1,4 +1,4 @@
## How to Add a New Appearance to LeptonX for Angular # How to Add a New Appearance to LeptonX for Angular
LeptonX has four appearances: light, dim, dark, and system. You can add a new appearance to LeptonX for Angular. In this document, we will show you how to add a new appearance to LeptonX for Angular. LeptonX has four appearances: light, dim, dark, and system. You can add a new appearance to LeptonX for Angular. In this document, we will show you how to add a new appearance to LeptonX for Angular.
### Step 1: Creating the New Theme Definition ### Step 1: Creating the New Theme Definition

2
docs/en/ui-themes/lepton-x/angular/how-to-change-default-theme-option.md

@ -1,4 +1,4 @@
## Configuring the Default Theme for LeptonX # Configuring the Default Theme for LeptonX
The LeptonX theme offers multiple appearances to suit your application's visual style. You can easily configure the default theme for your application using the ThemeLeptonXModule provided by LeptonX. The LeptonX theme offers multiple appearances to suit your application's visual style. You can easily configure the default theme for your application using the ThemeLeptonXModule provided by LeptonX.
### Configuration Code ### Configuration Code

2
docs/en/ui-themes/lepton-x/comparison-obsolete.md

@ -1,4 +1,4 @@
## Feature Set # Feature Set
### Frontend Choices ### Frontend Choices

6
modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentRenderErrorEvent.cs

@ -1,3 +1,5 @@
using System.Collections.Generic;
namespace Volo.Docs.Documents; namespace Volo.Docs.Documents;
public class DocumentRenderErrorEvent public class DocumentRenderErrorEvent
@ -5,4 +7,8 @@ public class DocumentRenderErrorEvent
public string Name { get; set; } public string Name { get; set; }
public string ErrorMessage { get; set; } public string ErrorMessage { get; set; }
public string Url { get; set; }
public Dictionary<string, string> UserPreferences { get; set; }
} }

3
modules/docs/src/Volo.Docs.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs

@ -23,7 +23,8 @@ namespace Volo.Docs.Bundling
"scss", "scss",
"sql", "sql",
"typescript", "typescript",
"diff" "diff",
"yaml"
}; };
public override void ConfigureBundle(BundleConfigurationContext context) public override void ConfigureBundle(BundleConfigurationContext context)

2
modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs

@ -36,6 +36,8 @@ namespace Volo.Docs
public bool MultiLanguageMode { get; set; } = true; public bool MultiLanguageMode { get; set; } = true;
public SingleProjectModeOptions SingleProjectMode { get; } = new (); public SingleProjectModeOptions SingleProjectMode { get; } = new ();
public bool EnableEnlargeImage { get; set; } = true;
private string GetFormattedRoutePrefix() private string GetFormattedRoutePrefix()
{ {

9
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml

@ -23,6 +23,7 @@
@inject IPageLayout PageLayout @inject IPageLayout PageLayout
@inject IHtmlLocalizer<DocsResource> L @inject IHtmlLocalizer<DocsResource> L
@inject IOptions<DocsWebGoogleOptions> DocsWebGoogleOptions @inject IOptions<DocsWebGoogleOptions> DocsWebGoogleOptions
@inject IOptions<DocsUiOptions> DocsUiOptions
@model IndexModel @model IndexModel
@{ @{
@ -40,6 +41,10 @@
<abp-style src="/Pages/Documents/Project/bootstrap-toc.css"/> <abp-style src="/Pages/Documents/Project/bootstrap-toc.css"/>
<abp-style src="/Pages/Documents/Shared/Styles/vs.css"/> <abp-style src="/Pages/Documents/Shared/Styles/vs.css"/>
<abp-style src="/Pages/Documents/Project/index.css"/> <abp-style src="/Pages/Documents/Project/index.css"/>
@if (DocsUiOptions.Value.EnableEnlargeImage)
{
<abp-style src="/Pages/Documents/Project/enlarge-image.css"/>
}
</abp-style-bundle> </abp-style-bundle>
} }
@ -57,6 +62,10 @@
<abp-script src="/Pages/Documents/Project/bootstrap-toc.js"/> <abp-script src="/Pages/Documents/Project/bootstrap-toc.js"/>
<abp-script src="/Pages/Documents/Shared/Scripts/vs.js"/> <abp-script src="/Pages/Documents/Shared/Scripts/vs.js"/>
<abp-script src="/Pages/Documents/Project/index.js"/> <abp-script src="/Pages/Documents/Project/index.js"/>
@if (DocsUiOptions.Value.EnableEnlargeImage)
{
<abp-script src="/Pages/Documents/Project/enlarge-image.js"/>
}
</abp-script-bundle> </abp-script-bundle>
if (DocsWebGoogleOptions.Value.EnableGoogleTranslate) if (DocsWebGoogleOptions.Value.EnableGoogleTranslate)
{ {

10
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

@ -572,7 +572,10 @@ namespace Volo.Docs.Pages.Documents.Project
Document.LocalDirectory Document.LocalDirectory
); );
content = HtmlNormalizer.WrapImagesWithinAnchors(content); if (!_uiOptions.EnableEnlargeImage)
{
content = HtmlNormalizer.WrapImagesWithinAnchors(content);
}
//todo find a way to make it on client in prismJS configuration (eg: map C# => csharp) //todo find a way to make it on client in prismJS configuration (eg: map C# => csharp)
content = HtmlNormalizer.ReplaceCodeBlocksLanguage( content = HtmlNormalizer.ReplaceCodeBlocksLanguage(
@ -590,7 +593,10 @@ namespace Volo.Docs.Pages.Documents.Project
Document.Content = $"````txt{Environment.NewLine}{message}{Environment.NewLine}````"; Document.Content = $"````txt{Environment.NewLine}{message}{Environment.NewLine}````";
await LocalEventBus.PublishAsync(new DocumentRenderErrorEvent await LocalEventBus.PublishAsync(new DocumentRenderErrorEvent
{ {
ErrorMessage = message, Name = Document.Name ErrorMessage = e.Message,
Name = Document.Name,
Url = Request.GetDisplayUrl(),
UserPreferences = UserPreferences
}); });
// Slow down with crawling // Slow down with crawling

87
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.css

@ -0,0 +1,87 @@
/* The Modal (background) */
.docs-image-modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(41,45,50); /* Fallback color */
background-color: rgb(41 45 50 / 50%);
cursor: zoom-out;
}
.docs-image-modal.show {
z-index: 9999;
align-items: center;
display: flex;
padding-top: 0;
}
/* Modal Content (image) */
.docs-image-modal .docs-image-modal-content {
margin: auto;
display: block;
background: #fff;
position: relative;
flex-direction: column;
background-clip: padding-box;
outline: 0;
}
/* Add Animation */
.docs-image-modal .docs-image-modal-content{
-webkit-animation-name: zoom;
-webkit-animation-duration: 0.6s;
animation-name: zoom;
animation-duration: 0.3s;
}
@-webkit-keyframes zoom {
from {-webkit-transform:scale(0)}
to {-webkit-transform:scale(1)}
}
@keyframes zoom {
from {transform:scale(0)}
to {transform:scale(1)}
}
/* The Close Button */
.docs-image-modal .close {
position: absolute;
top: 15px;
right: 35px;
color: #f1f1f1;
transition: 0.3s;
font-size: 48px;
font-weight: 100;
}
.docs-image-modal .close:hover,
.docs-image-modal .close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
/* 100% Image Width on Smaller Screens */
@media only screen and (max-width: 768px){
.docs-image-modal .docs-image-modal-content {
max-width: 95vw;
}
}
@media only screen and (min-width: 768px){
.docs-image-modal .docs-image-modal-content {
max-width: 80vw;
max-height: 80vh;
}
}
.docs-enlarge-image {
cursor: zoom-in;
}

34
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.js

@ -0,0 +1,34 @@
$(function () {
var $enlargeImage = $("article img");
if (!$enlargeImage.length) {
return;
}
$enlargeImage.addClass("docs-enlarge-image");
var $modal = $("#image-modal");
if (!$modal.length) {
$modal = $("<div class='docs-image-modal'><span class='close'>&times;</span><img class='docs-image-modal-content'/></div>");
$("body").append($modal);
}
var modalImg = $modal.find("img");
$enlargeImage.click(function () {
var width = $(this).width();
var height = $(this).height();
modalImg.attr("src", $(this).findWithSelf("img").attr("src"));
modalImg.css("min-width", width + "px");
modalImg.css("min-height", height + "px");
$modal.addClass("show");
});
$modal.find(".close").click(modalClose);
$modal.click(modalClose);
function modalClose() {
$modal.removeClass("show");
}
});

4
npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html

@ -1,11 +1,11 @@
<div class="abp-toast" [ngClass]="severityClass" (click)="tap()"> <div class="abp-toast" [ngClass]="severityClass" (click)="tap()">
<div class="abp-toast-icon"> <div class="abp-toast-icon">
<i class="fa icon" [ngClass]="iconClass" aria-hidden="true"></i> <i class="bi icon" [ngClass]="iconClass" aria-hidden="true"></i>
</div> </div>
<div class="abp-toast-content"> <div class="abp-toast-content">
@if (toast.options?.closable) { @if (toast.options?.closable) {
<button class="abp-toast-close-button" (click)="close()"> <button class="abp-toast-close-button" (click)="close()">
<i class="fa fa-times" aria-hidden="true"></i> <i class="bi bi-x fs-4" aria-hidden="true"></i>
</button> </button>
} }
<div class="abp-toast-title"> <div class="abp-toast-title">

26
npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss

@ -14,35 +14,39 @@ $toastClass: abp-toast;
.#{$toastClass} { .#{$toastClass} {
display: grid; display: grid;
grid-template-columns: 50px 1fr; grid-template-columns: 35px 1fr;
gap: 10px; gap: 5px;
margin: 5px 0; margin: 5px 0;
padding: 10px; padding: 7px;
border-radius: 0px;
width: 350px; width: 350px;
user-select: none; user-select: none;
box-shadow: 0 0 10px -5px rgba(#000, 0.4); box-shadow: 0 0 10px -5px rgba(#000, 0.4);
z-index: 9999; z-index: 9999;
color: #fff;
border-radius: 8px;
font-size: 14px;
box-shadow: 0 0 20px 0 rgba(76, 87, 125, 0.02);
@include fillColor(#f0f0f0, #000); @include fillColor(#f0f0f0, #000);
opacity: 1; opacity: 1;
&.#{$toastClass}-success { &.#{$toastClass}-success {
@include fillColor(#51a351, #fff); @include fillColor(#4fbf67, #fff);
} }
&.#{$toastClass}-info { &.#{$toastClass}-info {
@include fillColor(#2f96b4, #fff); @include fillColor(#438aa7, #fff);
} }
&.#{$toastClass}-warning { &.#{$toastClass}-warning {
@include fillColor(#f89406, #fff); @include fillColor(#ff9f38, #fff);
} }
&.#{$toastClass}-error { &.#{$toastClass}-error {
@include fillColor(#bd362f, #fff); @include fillColor(#c00d49, #fff);
} }
.#{$toastClass}-icon { .#{$toastClass}-icon {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
.icon { .icon {
font-size: 36px; font-size: 32px;
} }
} }
.#{$toastClass}-content { .#{$toastClass}-content {
@ -51,6 +55,8 @@ $toastClass: abp-toast;
align-self: center; align-self: center;
flex-direction: column; flex-direction: column;
word-break: break-word; word-break: break-word;
padding-bottom: 2px;
.#{$toastClass}-close-button { .#{$toastClass}-close-button {
position: absolute; position: absolute;
top: 0; top: 0;
@ -61,7 +67,7 @@ $toastClass: abp-toast;
margin: 0; margin: 0;
padding: 0px 5px 0 0; padding: 0px 5px 0 0;
width: 25px; width: 25px;
height: 25px; height: 100%;
border: none; border: none;
border-radius: 50%; border-radius: 50%;
background: transparent; background: transparent;

12
npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts

@ -18,22 +18,22 @@ export class ToastComponent implements OnInit {
get iconClass(): string { get iconClass(): string {
const { iconClass } = this.toast.options || {}; const { iconClass } = this.toast.options || {};
if (iconClass) { if (iconClass) {
return iconClass; return iconClass;
} }
switch (this.toast.severity) { switch (this.toast.severity) {
case 'success': case 'success':
return 'fa-check-circle'; return 'bi-check';
case 'info': case 'info':
return 'fa-info-circle'; return 'bi-info-circle';
case 'warning': case 'warning':
return 'fa-exclamation-triangle'; return 'bi-exclamation-triangle';
case 'error': case 'error':
return 'fa-times-circle'; return 'bi-shield-exclamation';
default: default:
return 'fa-exclamation-circle'; return 'bi-exclamation-triangle';
} }
} }

4
nupkg/common.ps1

@ -265,8 +265,8 @@ $projects = (
"modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared", "modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared",
"modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore", "modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore",
"modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB", "modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB",
# "modules/audit-logging/src/Volo.Abp.AuditLogging.Installer", "modules/audit-logging/src/Volo.Abp.AuditLogging.Installer",
# "source-code/Volo.Abp.AuditLogging.SourceCode", "source-code/Volo.Abp.AuditLogging.SourceCode",
# modules/background-jobs # modules/background-jobs
"modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain", "modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain",

Loading…
Cancel
Save