diff --git a/docs/en/ambient-context-pattern.md b/docs/en/ambient-context-pattern.md index 09f57c6cd7..411db43789 100644 --- a/docs/en/ambient-context-pattern.md +++ b/docs/en/ambient-context-pattern.md @@ -1,3 +1,3 @@ -## Ambient Context Pattern +# Ambient Context Pattern This document is planned to be written later. \ No newline at end of file diff --git a/docs/en/aspect-oriented-programming.md b/docs/en/aspect-oriented-programming.md index 64f0fdb256..c578f1e89c 100644 --- a/docs/en/aspect-oriented-programming.md +++ b/docs/en/aspect-oriented-programming.md @@ -1,3 +1,3 @@ -## Dynamic Proxying / Interceptors +# Dynamic Proxying / Interceptors This document is planned to be written later. \ No newline at end of file diff --git a/docs/en/cli/index.md b/docs/en/cli/index.md index c283121ce5..a25ed0c4eb 100644 --- a/docs/en/cli/index.md +++ b/docs/en/cli/index.md @@ -105,6 +105,8 @@ abp cli update abp cli update --preview abp cli update --version 1.0.0 abp cli remove +abp cli check-version +abp cli clear-cache ```` ### new diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 6434679793..5222de9a06 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -2,8 +2,11 @@ "items": [ { "text": "Get started", - "path": "get-started", "items": [ + { + "text": "Overview", + "path": "get-started" + }, { "text": "Single-layer solution", "path": "get-started/single-layer-web-application.md" @@ -42,10 +45,17 @@ { "text": "Tutorials", "items": [ + { + "text": "Overview", + "path": "tutorials" + }, { "text": "TODO application", - "path": "tutorials/todo", "items": [ + { + "text": "Overview", + "path": "tutorials/todo" + }, { "text": "Single-layer solution", "path": "tutorials/todo/single-layer" @@ -61,7 +71,7 @@ "items": [ { "text": "Overview", - "path": "tutorials/book-store/overview.md" + "path": "tutorials/book-store" }, { "text": "1: Creating the server side", @@ -114,10 +124,17 @@ { "text": "Tools", "items": [ + { + "text": "Overview", + "path": "tools.md" + }, { "text": "ABP CLI", - "path": "cli", "items": [ + { + "text": "Overview", + "path": "cli" + }, { "text": "Examples for the new command", "path": "cli/new-command-samples.md" @@ -126,19 +143,22 @@ }, { "text": "ABP Studio", - "path": "studio", "items": [ { - "text": "Installation", - "path": "studio/installation.md" + "text": "Overview", + "path": "studio" }, { - "text": "Overview", - "path": "studio/overview.md" + "text": "Installation", + "path": "studio/installation.md" }, { "text": "Fundamentals", "items": [ + { + "text": "Overview", + "path": "studio/overview.md" + }, { "text": "Solution Explorer", "path": "studio/solution-explorer.md" @@ -171,7 +191,7 @@ "text": "ABP Suite", "items": [ { - "text": "Overall", + "text": "Overview", "path": "suite" }, { @@ -192,8 +212,11 @@ }, { "text": "Generating CRUD Page", - "path": "suite/generating-crud-page.md", "items": [ + { + "text": "Overview", + "path": "suite/generating-crud-page.md" + }, { "text": "Creating Many-To-Many Relationship", "path": "suite/creating-many-to-many-relationship.md" @@ -242,14 +265,21 @@ { "text": "Fundamentals", "items": [ + { + "text": "Overview", + "path": "framework/fundamentals" + }, { "text": "Application Startup", "path": "framework/fundamentals/application-startup.md" }, { "text": "Authorization", - "path": "framework/fundamentals/authorization.md", "items": [ + { + "text": "Overview", + "path": "framework/fundamentals/authorization.md" + }, { "text": "Dynamic Claims", "path": "framework/fundamentals/dynamic-claims.md" @@ -258,8 +288,11 @@ }, { "text": "Caching", - "path": "framework/fundamentals/caching.md", "items": [ + { + "text": "Overview", + "path": "framework/fundamentals/caching.md" + }, { "text": "Redis Cache", "path": "framework/fundamentals/redis-cache.md" @@ -276,8 +309,11 @@ }, { "text": "Dependency Injection", - "path": "framework/fundamentals/dependency-injection.md", "items": [ + { + "text": "Overview", + "path": "framework/fundamentals/dependency-injection.md" + }, { "text": "AutoFac Integration", "path": "framework/fundamentals/autofac-integration.md" @@ -306,8 +342,11 @@ }, { "text": "Validation", - "path": "framework/fundamentals/validation.md", "items": [ + { + "text": "Overview", + "path": "framework/fundamentals/validation.md" + }, { "text": "FluentValidation Integration", "path": "framework/fundamentals/fluent-validation.md" @@ -319,14 +358,21 @@ { "text": "Infrastructure", "items": [ + { + "text": "Overview", + "path": "framework/infrastructure" + }, { "text": "Audit Logging", "path": "framework/infrastructure/audit-logging.md" }, { "text": "Background Jobs", - "path": "framework/infrastructure/background-jobs", "items": [ + { + "text": "Overview", + "path": "framework/infrastructure/background-jobs" + }, { "text": "Hangfire Integration", "path": "framework/infrastructure/background-jobs/hangfire.md" @@ -343,8 +389,11 @@ }, { "text": "Background Workers", - "path": "framework/infrastructure/background-workers", "items": [ + { + "text": "Overview", + "path": "framework/infrastructure/background-workers" + }, { "text": "Quartz Integration", "path": "framework/infrastructure/background-workers/quartz.md" @@ -359,7 +408,7 @@ "text": "BLOB Storing", "items": [ { - "text": "BLOB Storing System", + "text": "Overview", "path": "framework/infrastructure/blob-storing" }, { @@ -429,7 +478,7 @@ "text": "Email Sending", "items": [ { - "text": "Email Sending System", + "text": "Overview", "path": "framework/infrastructure/emailing.md" }, { @@ -446,7 +495,7 @@ "text": "Event Bus", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/infrastructure/event-bus" }, { @@ -455,8 +504,11 @@ }, { "text": "Distributed Event Bus", - "path": "framework/infrastructure/event-bus/distributed", "items": [ + { + "text": "Overview", + "path": "framework/infrastructure/event-bus/distributed" + }, { "text": "Azure Service Bus Integration", "path": "framework/infrastructure/event-bus/distributed/azure.md" @@ -519,8 +571,11 @@ }, { "text": "Text Templating", - "path": "framework/infrastructure/text-templating", "items": [ + { + "text": "Overview", + "path": "framework/infrastructure/text-templating" + }, { "text": "Razor Integration", "path": "framework/infrastructure/text-templating/razor.md" @@ -543,13 +598,16 @@ }, { "text": "Architecture", - "path": "framework/architecture", "items": [ + { + "text": "Overview", + "path": "framework/architecture" + }, { "text": "Best Practices", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/architecture/best-practices" }, { @@ -559,6 +617,10 @@ { "text": "Domain Layer", "items": [ + { + "text": "Overview", + "path": "framework/architecture/best-practices/domain-layer-overview.md" + }, { "text": "Entities", "path": "framework/architecture/best-practices/entities.md" @@ -576,6 +638,10 @@ { "text": "Application Layer", "items": [ + { + "text": "Overview", + "path": "framework/architecture/best-practices/application-layer-overview.md" + }, { "text": "Application Services", "path": "framework/architecture/best-practices/application-services.md" @@ -589,6 +655,10 @@ { "text": "Data Access", "items": [ + { + "text": "Overview", + "path": "framework/architecture/best-practices/data-access-overview.md" + }, { "text": "Entity Framework Core Integration", "path": "framework/architecture/best-practices/entity-framework-core-integration.md" @@ -605,7 +675,7 @@ "text": "Modularity", "items": [ { - "text": "Basics", + "text": "Overview", "path": "framework/architecture/modularity/basics.md" }, { @@ -616,7 +686,7 @@ "text": "Customizing/Extending Modules", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/architecture/modularity/extending/customizing-application-modules-guide.md" }, { @@ -639,12 +709,16 @@ "text": "Domain Driven Design", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/architecture/domain-driven-design" }, { "text": "Domain Layer", "items": [ + { + "text": "Overview", + "path": "framework/architecture/domain-driven-design/domain-layer.md" + }, { "text": "Entities & Aggregate Roots", "path": "framework/architecture/domain-driven-design/entities.md" @@ -670,6 +744,10 @@ { "text": "Application Layer", "items": [ + { + "text": "Overview", + "path": "framework/architecture/domain-driven-design/application-layer.md" + }, { "text": "Application Services", "path": "framework/architecture/domain-driven-design/application-services.md" @@ -703,9 +781,17 @@ { "text": "API Development", "items": [ + { + "text": "Overview", + "path": "framework/api-development" + }, { "text": "ABP Endpoints", "items": [ + { + "text": "Overview", + "path": "framework/api-development/standard-apis" + }, { "text": "Application Configuration", "path": "framework/api-development/standard-apis/configuration.md" @@ -745,12 +831,16 @@ { "text": "User Interface", "items": [ + { + "text": "Overview", + "path": "framework/ui" + }, { "text": "MVC / Razor Pages", "items": [ { - "text": "Overall", - "path": "framework/ui/mvc-razor-pages/overall.md" + "text": "Overview", + "path": "framework/ui/mvc-razor-pages" }, { "text": "Navigation / Menus", @@ -794,8 +884,11 @@ }, { "text": "Tag Helpers", - "path": "framework/ui/mvc-razor-pages/tag-helpers", "items": [ + { + "text": "Overview", + "path": "framework/ui/mvc-razor-pages/tag-helpers" + }, { "text": "Form Elements", "path": "framework/ui/mvc-razor-pages/tag-helpers/form-elements.md" @@ -832,8 +925,11 @@ }, { "text": "Theming", - "path": "framework/ui/mvc-razor-pages/theming.md", "items": [ + { + "text": "Overview", + "path": "framework/ui/mvc-razor-pages/theming.md" + }, { "text": "The Basic Theme", "path": "framework/ui/mvc-razor-pages/basic-theme.md" @@ -848,7 +944,7 @@ "text": "JavaScript API", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/mvc-razor-pages/javascript-api" }, { @@ -909,7 +1005,7 @@ "text": "Customize/Extend the UI", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/mvc-razor-pages/customization-user-interface.md" }, { @@ -941,7 +1037,7 @@ "text": "Blazor", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/blazor/overall.md" }, { @@ -960,7 +1056,7 @@ "text": "Theming", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/blazor/theming.md" }, { @@ -1272,7 +1368,7 @@ "text": "Theming", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/angular/theming.md" }, { @@ -1305,7 +1401,7 @@ "text": "Extensions", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/angular/extensions-overall.md" }, { @@ -1355,7 +1451,7 @@ "text": "React Native", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/react-native" } ] @@ -1364,7 +1460,7 @@ "text": "MAUI", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/ui/maui" } ] @@ -1393,13 +1489,16 @@ "text": "Data Access", "items": [ { - "text": "Overall", + "text": "Overview", "path": "framework/data" }, { "text": "Entity Framework Core", - "path": "framework/data/entity-framework-core", "items": [ + { + "text": "Overview", + "path": "framework/data/entity-framework-core" + }, { "text": "Database Migrations", "path": "framework/data/entity-framework-core/migrations.md" @@ -1467,7 +1566,7 @@ "text": "Solution Templates", "items": [ { - "text": "Overall", + "text": "Overview", "path": "solution-templates" }, { @@ -1492,7 +1591,7 @@ "text": "Application Modules", "items": [ { - "text": "Overall", + "text": "Overview", "path": "modules" }, { @@ -1557,8 +1656,11 @@ }, { "text": "IdentityServer", - "path": "modules/identity-server.md", "items": [ + { + "text": "Overview", + "path": "modules/identity-server.md" + }, { "text": "IdentityServer Migration Guide", "path": "release-info/migration-guides/identityserver4-step-by-step.md" @@ -1575,8 +1677,11 @@ }, { "text": "OpenIddict", - "path": "modules/openiddict.md", "items": [ + { + "text": "Overview", + "path": "modules/openiddict.md" + }, { "text": "OpenIddict Migration Guide", "path": "release-info/migration-guides/openiddict-step-by-step.md" @@ -1633,13 +1738,17 @@ { "text": "UI Themes", "items": [ + { + "text": "Overview", + "path": "ui-themes" + }, { "text": "The Basic Theme", "path": "framework/ui/mvc-razor-pages/basic-theme.md" }, { "text": "LeptonX Theme", - "path": "ui-themes/lepton-x/index.md" + "path": "ui-themes/lepton-x" } ] }, @@ -1647,7 +1756,7 @@ "text": "Testing", "items": [ { - "text": "Overall", + "text": "Overview", "path": "testing/overall.md" }, { @@ -1666,8 +1775,11 @@ }, { "text": "Deployment", - "path": "deployment", "items": [ + { + "text": "Overview", + "path": "deployment" + }, { "text": "Configuring SSL certificate(HTTPS)", "path": "deployment/ssl.md" @@ -1718,6 +1830,10 @@ { "text": "Books", "items": [ + { + "text": "Overview", + "path": "https://abp.io/books" + }, { "text": "Mastering ABP Framework", "path": "https://abp.io/books/mastering-abp-framework" @@ -1731,6 +1847,10 @@ { "text": "Release Information", "items": [ + { + "text": "Overview", + "path": "release-info" + }, { "text": "Release Notes", "path": "release-info/release-notes.md" diff --git a/docs/en/dynamic-proxying-interceptors.md b/docs/en/dynamic-proxying-interceptors.md index 34c9c69b67..722eadc249 100644 --- a/docs/en/dynamic-proxying-interceptors.md +++ b/docs/en/dynamic-proxying-interceptors.md @@ -1,4 +1,4 @@ -## Dynamic Proxying / Interceptors +# Dynamic Proxying / Interceptors This document is planned to be written later. diff --git a/docs/en/framework/api-development/index.md b/docs/en/framework/api-development/index.md new file mode 100644 index 0000000000..4b2105486d --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/api-development/standard-apis/index.md b/docs/en/framework/api-development/standard-apis/index.md new file mode 100644 index 0000000000..3dd4a284f5 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/architecture/best-practices/application-layer-overview.md b/docs/en/framework/architecture/best-practices/application-layer-overview.md new file mode 100644 index 0000000000..10afeeb9ca --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/architecture/best-practices/application-services.md b/docs/en/framework/architecture/best-practices/application-services.md index e3fd00f782..d3ad44ca54 100644 --- a/docs/en/framework/architecture/best-practices/application-services.md +++ b/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**. diff --git a/docs/en/framework/architecture/best-practices/data-access-overview.md b/docs/en/framework/architecture/best-practices/data-access-overview.md new file mode 100644 index 0000000000..1369a21e32 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/architecture/best-practices/data-transfer-objects.md b/docs/en/framework/architecture/best-practices/data-transfer-objects.md index cd3a34513a..e4caa6ed66 100644 --- a/docs/en/framework/architecture/best-practices/data-transfer-objects.md +++ b/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** inherit from the pre-built **base DTO classes** where possible and necessary (like `EntityDto`, `CreationAuditedEntityDto`, `AuditedEntityDto`, `FullAuditedEntityDto` and so on). diff --git a/docs/en/framework/architecture/best-practices/domain-layer-overview.md b/docs/en/framework/architecture/best-practices/domain-layer-overview.md new file mode 100644 index 0000000000..b20ae1b208 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/architecture/best-practices/domain-services.md b/docs/en/framework/architecture/best-practices/domain-services.md index b1081d7ebc..565a67a715 100644 --- a/docs/en/framework/architecture/best-practices/domain-services.md +++ b/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 diff --git a/docs/en/framework/architecture/best-practices/entities.md b/docs/en/framework/architecture/best-practices/entities.md index b16234d52b..319f1648ff 100644 --- a/docs/en/framework/architecture/best-practices/entities.md +++ b/docs/en/framework/architecture/best-practices/entities.md @@ -1,4 +1,4 @@ -## Entity Best Practices & Conventions +# Entity Best Practices & Conventions ### Entities diff --git a/docs/en/framework/architecture/best-practices/entity-framework-core-integration.md b/docs/en/framework/architecture/best-practices/entity-framework-core-integration.md index efa622445c..9a2081e4e5 100644 --- a/docs/en/framework/architecture/best-practices/entity-framework-core-integration.md +++ b/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. diff --git a/docs/en/framework/architecture/best-practices/index.md b/docs/en/framework/architecture/best-practices/index.md index 85e00a0b51..49b1e5ec0f 100644 --- a/docs/en/framework/architecture/best-practices/index.md +++ b/docs/en/framework/architecture/best-practices/index.md @@ -1,4 +1,4 @@ -## Module Development Best Practices & Conventions +# Module Development Best Practices & Conventions ### Introduction diff --git a/docs/en/framework/architecture/best-practices/module-architecture.md b/docs/en/framework/architecture/best-practices/module-architecture.md index 25d219b7ac..d050094656 100644 --- a/docs/en/framework/architecture/best-practices/module-architecture.md +++ b/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 diff --git a/docs/en/framework/architecture/best-practices/mongodb-integration.md b/docs/en/framework/architecture/best-practices/mongodb-integration.md index 16a6a7d58f..36b037c967 100644 --- a/docs/en/framework/architecture/best-practices/mongodb-integration.md +++ b/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. diff --git a/docs/en/framework/architecture/best-practices/repositories.md b/docs/en/framework/architecture/best-practices/repositories.md index 32da1ecee9..5e491ecb80 100644 --- a/docs/en/framework/architecture/best-practices/repositories.md +++ b/docs/en/framework/architecture/best-practices/repositories.md @@ -1,4 +1,4 @@ -## Repository Best Practices & Conventions +# Repository Best Practices & Conventions ### Repository Interfaces diff --git a/docs/en/framework/architecture/domain-driven-design/application-layer.md b/docs/en/framework/architecture/domain-driven-design/application-layer.md new file mode 100644 index 0000000000..03b83fb038 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/architecture/domain-driven-design/domain-layer.md b/docs/en/framework/architecture/domain-driven-design/domain-layer.md new file mode 100644 index 0000000000..9ce7519810 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/fundamentals/application-startup.md b/docs/en/framework/fundamentals/application-startup.md index 920e1f78cc..e985048714 100644 --- a/docs/en/framework/fundamentals/application-startup.md +++ b/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. diff --git a/docs/en/framework/fundamentals/index.md b/docs/en/framework/fundamentals/index.md new file mode 100644 index 0000000000..7ce2c59f7b --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/infrastructure/concurrency-check.md b/docs/en/framework/infrastructure/concurrency-check.md index 03e5aafc90..731750f306 100644 --- a/docs/en/framework/infrastructure/concurrency-check.md +++ b/docs/en/framework/infrastructure/concurrency-check.md @@ -1,4 +1,4 @@ -## Concurrency Check +# Concurrency Check ### Introduction diff --git a/docs/en/framework/infrastructure/index.md b/docs/en/framework/infrastructure/index.md new file mode 100644 index 0000000000..f9524216c3 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/ui/angular/authorization.md b/docs/en/framework/ui/angular/authorization.md index 04bc9ab991..dcf6e0c67d 100644 --- a/docs/en/framework/ui/angular/authorization.md +++ b/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. You can find **OAuth configuration** in the _environment.ts_ files. diff --git a/docs/en/framework/ui/angular/breadcrumb.md b/docs/en/framework/ui/angular/breadcrumb.md index 77351b8236..1a26975c96 100644 --- a/docs/en/framework/ui/angular/breadcrumb.md +++ b/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` event and creates inputs for `BreadcrumbItemsComponent`. This component is used in diff --git a/docs/en/framework/ui/angular/extensions-overall.md b/docs/en/framework/ui/angular/extensions-overall.md index bba922461b..4776198001 100644 --- a/docs/en/framework/ui/angular/extensions-overall.md +++ b/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. diff --git a/docs/en/framework/ui/angular/quick-start.md b/docs/en/framework/ui/angular/quick-start.md index 2a8986f965..df2d6331b9 100644 --- a/docs/en/framework/ui/angular/quick-start.md +++ b/docs/en/framework/ui/angular/quick-start.md @@ -4,8 +4,8 @@ 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. -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. +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.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: - [Angular Language Service](https://marketplace.visualstudio.com/items?itemName=angular.ng-template) - [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) diff --git a/docs/en/framework/ui/angular/service-proxies.md b/docs/en/framework/ui/angular/service-proxies.md index 99e6e781c2..695e3027c4 100644 --- a/docs/en/framework/ui/angular/service-proxies.md +++ b/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. diff --git a/docs/en/framework/ui/index.md b/docs/en/framework/ui/index.md new file mode 100644 index 0000000000..760a2616b0 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/framework/ui/mvc-razor-pages/client-side-package-management.md b/docs/en/framework/ui/mvc-razor-pages/client-side-package-management.md index 2e7515884a..bb984a001f 100644 --- a/docs/en/framework/ui/mvc-razor-pages/client-side-package-management.md +++ b/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. diff --git a/docs/en/get-started/layered-web-application.md b/docs/en/get-started/layered-web-application.md index ee26397797..804b2df787 100644 --- a/docs/en/get-started/layered-web-application.md +++ b/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/). [1](#f-editor) * [.NET 8.0+](https://dotnet.microsoft.com/en-us/download/dotnet) {{ if UI != "Blazor" }} -* [Node v16 or v18](https://nodejs.org/) -* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) [2](#f-yarn) or npm v6+ (already installed with Node) +* [Node v18.19+](https://nodejs.org/) +* [Yarn v1.22+ (not v2)](https://classic.yarnpkg.com/en/docs/install) [2](#f-yarn) or npm v10+ (already installed with Node) {{ end }} {{ if Tiered == "Yes" }} * [Redis](https://redis.io/) (as the [distributed cache](Caching.md)). diff --git a/docs/en/get-started/single-layer-web-application.md b/docs/en/get-started/single-layer-web-application.md index 9708c513cb..201d0fb2df 100644 --- a/docs/en/get-started/single-layer-web-application.md +++ b/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/). [1](#f-editor) * [.NET 8.0+](https://dotnet.microsoft.com/en-us/download/dotnet) {{ if UI != "Blazor" }} -* [Node v16 or v18](https://nodejs.org/) -* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) [2](#f-yarn) or npm v6+ (already installed with Node) +* [Node v18.19+](https://nodejs.org/) +* [Yarn v1.22+ (not v2)](https://classic.yarnpkg.com/en/docs/install) [2](#f-yarn) or npm v10+ (already installed with Node) {{ end }} {{ if Tiered == "Yes" }} * [Redis](https://redis.io/) (as the [distributed cache](Caching.md)). diff --git a/docs/en/guides/migrating-from-open-source.md b/docs/en/guides/migrating-from-open-source.md index f0ecbfc22b..f73b7afc8d 100644 --- a/docs/en/guides/migrating-from-open-source.md +++ b/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.TextTemplateManagement - Volo.FileManagement -- Volo.Chat - Volo.Abp.Gdpr - Volo.Abp.LeptonXTheme diff --git a/docs/en/release-info/index.md b/docs/en/release-info/index.md new file mode 100644 index 0000000000..eb6a4ef602 --- /dev/null +++ b/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) \ No newline at end of file diff --git a/docs/en/release-info/migration-guides/abp-8-3.md b/docs/en/release-info/migration-guides/abp-8-3.md index bc726e68d8..50a7f274a4 100644 --- a/docs/en/release-info/migration-guides/abp-8-3.md +++ b/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 +### 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 > 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. diff --git a/docs/en/studio/installation.md b/docs/en/studio/installation.md index 11f390f9f3..4dc158e464 100644 --- a/docs/en/studio/installation.md +++ b/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: ### 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) ABP Studio needs [WireGuard](https://www.wireguard.com/) for Kubernetes operations. You can find the installation instructions for your specific operating system below: diff --git a/docs/en/tools.md b/docs/en/tools.md new file mode 100644 index 0000000000..356db9f639 --- /dev/null +++ b/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. \ No newline at end of file diff --git a/docs/en/tutorials/book-store/overview.md b/docs/en/tutorials/book-store/index.md similarity index 100% rename from docs/en/tutorials/book-store/overview.md rename to docs/en/tutorials/book-store/index.md diff --git a/docs/en/tutorials/index.md b/docs/en/tutorials/index.md new file mode 100644 index 0000000000..aac3abfaed --- /dev/null +++ b/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. \ No newline at end of file diff --git a/docs/en/tutorials/todo/layered/index.md b/docs/en/tutorials/todo/layered/index.md index db25c826f1..6761bb68bb 100644 --- a/docs/en/tutorials/todo/layered/index.md +++ b/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 * 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"}} diff --git a/docs/en/tutorials/todo/single-layer/index.md b/docs/en/tutorials/todo/single-layer/index.md index 9afbbd8833..3b4f755c70 100644 --- a/docs/en/tutorials/todo/single-layer/index.md +++ b/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 * 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"}} diff --git a/docs/en/ui-themes/lepton-x/angular-customization.md b/docs/en/ui-themes/lepton-x/angular-customization.md index 5c570478c2..71ee3761f2 100644 --- a/docs/en/ui-themes/lepton-x/angular-customization.md +++ b/docs/en/ui-themes/lepton-x/angular-customization.md @@ -1,4 +1,4 @@ -## Customization +# Customization ### Layouts diff --git a/docs/en/ui-themes/lepton-x/angular/how-to-add-a-new-variation-to-lepton-x-for-angular.md b/docs/en/ui-themes/lepton-x/angular/how-to-add-a-new-variation-to-lepton-x-for-angular.md index 01ea39c5ec..afea2fd228 100644 --- a/docs/en/ui-themes/lepton-x/angular/how-to-add-a-new-variation-to-lepton-x-for-angular.md +++ b/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. ### Step 1: Creating the New Theme Definition diff --git a/docs/en/ui-themes/lepton-x/angular/how-to-change-default-theme-option.md b/docs/en/ui-themes/lepton-x/angular/how-to-change-default-theme-option.md index 961cbc461e..4b58c4b106 100644 --- a/docs/en/ui-themes/lepton-x/angular/how-to-change-default-theme-option.md +++ b/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. ### Configuration Code diff --git a/docs/en/ui-themes/lepton-x/comparison-obsolete.md b/docs/en/ui-themes/lepton-x/comparison-obsolete.md index 2870be0a8e..e14dcfc368 100644 --- a/docs/en/ui-themes/lepton-x/comparison-obsolete.md +++ b/docs/en/ui-themes/lepton-x/comparison-obsolete.md @@ -1,4 +1,4 @@ -## Feature Set +# Feature Set ### Frontend Choices diff --git a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentRenderErrorEvent.cs b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentRenderErrorEvent.cs index 2f30099576..f837c740e7 100644 --- a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentRenderErrorEvent.cs +++ b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentRenderErrorEvent.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; + namespace Volo.Docs.Documents; public class DocumentRenderErrorEvent @@ -5,4 +7,8 @@ public class DocumentRenderErrorEvent public string Name { get; set; } public string ErrorMessage { get; set; } + + public string Url { get; set; } + + public Dictionary UserPreferences { get; set; } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs b/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs index 3fc129bf55..0be1e7cb29 100644 --- a/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs +++ b/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs @@ -23,7 +23,8 @@ namespace Volo.Docs.Bundling "scss", "sql", "typescript", - "diff" + "diff", + "yaml" }; public override void ConfigureBundle(BundleConfigurationContext context) diff --git a/modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs b/modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs index 67af1f3197..702536c31d 100644 --- a/modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs +++ b/modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs @@ -36,6 +36,8 @@ namespace Volo.Docs public bool MultiLanguageMode { get; set; } = true; public SingleProjectModeOptions SingleProjectMode { get; } = new (); + + public bool EnableEnlargeImage { get; set; } = true; private string GetFormattedRoutePrefix() { diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml index 9507da66ce..2167119a0d 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml @@ -23,6 +23,7 @@ @inject IPageLayout PageLayout @inject IHtmlLocalizer L @inject IOptions DocsWebGoogleOptions +@inject IOptions DocsUiOptions @model IndexModel @{ @@ -40,6 +41,10 @@ + @if (DocsUiOptions.Value.EnableEnlargeImage) + { + + } } @@ -57,6 +62,10 @@ + @if (DocsUiOptions.Value.EnableEnlargeImage) + { + + } if (DocsWebGoogleOptions.Value.EnableGoogleTranslate) { diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index c80b81bf71..d69d72f038 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -572,7 +572,10 @@ namespace Volo.Docs.Pages.Documents.Project 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) content = HtmlNormalizer.ReplaceCodeBlocksLanguage( @@ -590,7 +593,10 @@ namespace Volo.Docs.Pages.Documents.Project Document.Content = $"````txt{Environment.NewLine}{message}{Environment.NewLine}````"; 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 diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.css b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.css new file mode 100644 index 0000000000..1113d2f914 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.js b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/enlarge-image.js new file mode 100644 index 0000000000..4e402d8abf --- /dev/null +++ b/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 = $("
×
"); + $("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"); + } +}); \ No newline at end of file diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html index 0f123fdadd..74e4f72a0a 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html @@ -1,11 +1,11 @@
- +
@if (toast.options?.closable) { }
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss index b4966c310d..b4be48fb95 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss @@ -14,35 +14,39 @@ $toastClass: abp-toast; .#{$toastClass} { display: grid; - grid-template-columns: 50px 1fr; - gap: 10px; + grid-template-columns: 35px 1fr; + gap: 5px; margin: 5px 0; - padding: 10px; - border-radius: 0px; + padding: 7px; width: 350px; user-select: none; box-shadow: 0 0 10px -5px rgba(#000, 0.4); 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); opacity: 1; &.#{$toastClass}-success { - @include fillColor(#51a351, #fff); + @include fillColor(#4fbf67, #fff); } &.#{$toastClass}-info { - @include fillColor(#2f96b4, #fff); + @include fillColor(#438aa7, #fff); } &.#{$toastClass}-warning { - @include fillColor(#f89406, #fff); + @include fillColor(#ff9f38, #fff); } &.#{$toastClass}-error { - @include fillColor(#bd362f, #fff); + @include fillColor(#c00d49, #fff); } .#{$toastClass}-icon { display: flex; align-items: center; justify-content: center; .icon { - font-size: 36px; + font-size: 32px; } } .#{$toastClass}-content { @@ -51,6 +55,8 @@ $toastClass: abp-toast; align-self: center; flex-direction: column; word-break: break-word; + padding-bottom: 2px; + .#{$toastClass}-close-button { position: absolute; top: 0; @@ -61,7 +67,7 @@ $toastClass: abp-toast; margin: 0; padding: 0px 5px 0 0; width: 25px; - height: 25px; + height: 100%; border: none; border-radius: 50%; background: transparent; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts index 4d842df02a..b528d490a4 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts +++ b/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 { const { iconClass } = this.toast.options || {}; - + if (iconClass) { return iconClass; } switch (this.toast.severity) { case 'success': - return 'fa-check-circle'; + return 'bi-check'; case 'info': - return 'fa-info-circle'; + return 'bi-info-circle'; case 'warning': - return 'fa-exclamation-triangle'; + return 'bi-exclamation-triangle'; case 'error': - return 'fa-times-circle'; + return 'bi-shield-exclamation'; default: - return 'fa-exclamation-circle'; + return 'bi-exclamation-triangle'; } } diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index 9f014cd526..9ed8653690 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -265,8 +265,8 @@ $projects = ( "modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared", "modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore", "modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB", - # "modules/audit-logging/src/Volo.Abp.AuditLogging.Installer", - # "source-code/Volo.Abp.AuditLogging.SourceCode", + "modules/audit-logging/src/Volo.Abp.AuditLogging.Installer", + "source-code/Volo.Abp.AuditLogging.SourceCode", # modules/background-jobs "modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain",