Browse Source

Merge branch 'dev' into ui-extensions-blazor

pull/7686/head
Ilkay Ilknur 6 years ago
parent
commit
89541d0003
  1. 3
      .github/ISSUE_TEMPLATE
  2. 1
      .gitignore
  3. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
  4. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json
  5. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
  6. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json
  7. 1
      common.DotSettings
  8. 2
      common.props
  9. 202
      docs/en/Blog-Posts/2020-12-18 v4_1_Preview/POST.md
  10. BIN
      docs/en/Blog-Posts/2020-12-18 v4_1_Preview/abp-commercial-public-website.png
  11. BIN
      docs/en/Blog-Posts/2020-12-18 v4_1_Preview/blazor-identityserver-ui.png
  12. BIN
      docs/en/Blog-Posts/2020-12-18 v4_1_Preview/blazor-organization-units.png
  13. BIN
      docs/en/Blog-Posts/2020-12-18 v4_1_Preview/event-list-ui.png
  14. BIN
      docs/en/Blog-Posts/2020-12-18 v4_1_Preview/spanish-commercial-translation.png
  15. BIN
      docs/en/Blog-Posts/2020-12-18 v4_1_Preview/type-ahead.png
  16. 2
      docs/en/CLI.md
  17. 2
      docs/en/Community-Articles/2020-04-27-Use-Azure-Active-Directory-Authentication-for-MVC-Razor-Page-Applications/POST.md
  18. 5
      docs/en/Community-Articles/2020-12-10-How-to-Integrate-the-Telerik-Blazor-Component/POST.md
  19. 232
      docs/en/PlugIn-Modules.md
  20. 1
      docs/en/Road-Map.md
  21. 15
      docs/en/Samples/Index.md
  22. 4
      docs/en/Samples/Microservice-Demo.md
  23. 11
      docs/en/UI/AspNetCore/Tag-Helpers/Modals.md
  24. 25
      docs/en/UI/Blazor/Components/SubmitButton.md
  25. 47
      docs/en/UI/Blazor/Global-Scripts-Styles.md
  26. 12
      docs/en/docs-nav.json
  27. BIN
      docs/en/images/simple-plug-in-dll-file.png
  28. BIN
      docs/en/images/simple-plugin-library.png
  29. BIN
      docs/en/images/simple-plugin-output.png
  30. BIN
      docs/en/images/simple-razor-plug-in-dll-file.png
  31. BIN
      docs/en/images/simple-razor-plugin.png
  32. 1979
      docs/zh-Hans/Domain-Driven-Design-Implementation-Guide.md
  33. 11
      docs/zh-Hans/UI/AspNetCore/Tag-Helpers/Modals.md
  34. 78
      docs/zh-Hans/docs-nav.json
  35. BIN
      docs/zh-Hans/images/abp-dynamic-form-result.png
  36. BIN
      docs/zh-Hans/images/abp-form-input-validation-error-french-name.png
  37. BIN
      docs/zh-Hans/images/abp-form-input-validation-error-french.png
  38. BIN
      docs/zh-Hans/images/abp-form-input-validation-error.png
  39. BIN
      docs/zh-Hans/images/ajax-error.png
  40. BIN
      docs/zh-Hans/images/aspnetcore-web-tests-in-solution.png
  41. BIN
      docs/zh-Hans/images/basic-theme-account-layout.png
  42. BIN
      docs/zh-Hans/images/basic-theme-application-layout-blazor.png
  43. BIN
      docs/zh-Hans/images/basic-theme-application-layout-parts.png
  44. BIN
      docs/zh-Hans/images/basic-theme-application-layout.png
  45. BIN
      docs/zh-Hans/images/blazor-message-confirm.png
  46. BIN
      docs/zh-Hans/images/blazor-message-error.png
  47. BIN
      docs/zh-Hans/images/blazor-message-success.png
  48. BIN
      docs/zh-Hans/images/blazor-notification-bell-component.png
  49. BIN
      docs/zh-Hans/images/blazor-notification-success.png
  50. BIN
      docs/zh-Hans/images/blazor-page-alert-example.png
  51. BIN
      docs/zh-Hans/images/bookstore-branding-blazor.png
  52. BIN
      docs/zh-Hans/images/bookstore-logo-blazor.png
  53. BIN
      docs/zh-Hans/images/branding-appname.png
  54. BIN
      docs/zh-Hans/images/branding-nobrand.png
  55. BIN
      docs/zh-Hans/images/breadcrumbs-example.png
  56. BIN
      docs/zh-Hans/images/datatables-custom-render-date.png
  57. BIN
      docs/zh-Hans/images/datatables-default-render-date.png
  58. BIN
      docs/zh-Hans/images/datatables-example.png
  59. BIN
      docs/zh-Hans/images/datatables-row-actions-confirmation.png
  60. BIN
      docs/zh-Hans/images/datatables-row-actions-icon.png
  61. BIN
      docs/zh-Hans/images/datatables-row-actions.png
  62. BIN
      docs/zh-Hans/images/db-options.png
  63. BIN
      docs/zh-Hans/images/ddd-microservice-simple.png
  64. BIN
      docs/zh-Hans/images/domain-driven-design-aggregate-keep-small.png
  65. BIN
      docs/zh-Hans/images/domain-driven-design-clean-architecture.png
  66. BIN
      docs/zh-Hans/images/domain-driven-design-domain-vs-application-logic.png
  67. BIN
      docs/zh-Hans/images/domain-driven-design-entity-primary-keys.png
  68. BIN
      docs/zh-Hans/images/domain-driven-design-example-domain-schema.png
  69. BIN
      docs/zh-Hans/images/domain-driven-design-issue-aggregate-diagram.png
  70. BIN
      docs/zh-Hans/images/domain-driven-design-layers.png
  71. BIN
      docs/zh-Hans/images/domain-driven-design-multiple-applications.png
  72. BIN
      docs/zh-Hans/images/domain-driven-design-project-relations.png
  73. BIN
      docs/zh-Hans/images/domain-driven-design-reference-by-id-sample.png
  74. BIN
      docs/zh-Hans/images/domain-driven-design-vs-solution.png
  75. BIN
      docs/zh-Hans/images/domain-driven-design-web-request-flow.png
  76. BIN
      docs/zh-Hans/images/example-global-styles.png
  77. BIN
      docs/zh-Hans/images/features-action.png
  78. BIN
      docs/zh-Hans/images/features-modal.png
  79. BIN
      docs/zh-Hans/images/issue-first-test.png
  80. BIN
      docs/zh-Hans/images/issue-list.png
  81. BIN
      docs/zh-Hans/images/js-message-confirm.png
  82. BIN
      docs/zh-Hans/images/js-message-error.png
  83. BIN
      docs/zh-Hans/images/js-message-success.png
  84. BIN
      docs/zh-Hans/images/js-notify-success.png
  85. BIN
      docs/zh-Hans/images/lepton-theme-account-layout.png
  86. BIN
      docs/zh-Hans/images/lepton-theme-application-layout.png
  87. BIN
      docs/zh-Hans/images/lepton-theme-blazor-layout.png
  88. BIN
      docs/zh-Hans/images/modal-example-product-create.png
  89. BIN
      docs/zh-Hans/images/modal-example-product-info.png
  90. BIN
      docs/zh-Hans/images/modal-manager-cancel-warning.png
  91. BIN
      docs/zh-Hans/images/modal-manager-example-modal.png
  92. BIN
      docs/zh-Hans/images/modal-manager-validation.png
  93. BIN
      docs/zh-Hans/images/modal-page-on-rider.png
  94. BIN
      docs/zh-Hans/images/nav-main-menu-administration.png
  95. BIN
      docs/zh-Hans/images/nav-main-menu.png
  96. BIN
      docs/zh-Hans/images/page-alert-account-layout.png
  97. BIN
      docs/zh-Hans/images/page-alert-example.png
  98. BIN
      docs/zh-Hans/images/product-create-modal-page-on-rider.png
  99. BIN
      docs/zh-Hans/images/react-native-introduction.gif
  100. BIN
      docs/zh-Hans/images/solution-test-projects.png

3
.github/ISSUE_TEMPLATE

@ -10,6 +10,7 @@ If you're creating a bug/problem report, please include followings:
* Your **ABP Framework version**.
* Your **User Interface** type (Angular/MVC/React... etc.) if the issue is related to a specific UI
* Your database provider(EF Core/MongoDB)
* Exception message and **stack trace** if available (check the logs).
* Steps needed to **reproduce** the problem.
@ -21,4 +22,4 @@ Please use Stack Overflow for your questions about using the framework, template
https://stackoverflow.com/questions/tagged/abp
Use **abp** tag in your questions.
Use **abp** tag in your questions.

1
.gitignore

@ -153,6 +153,7 @@ PublishScripts/
# NuGet Packages
*.nupkg
*.snupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.

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

@ -194,6 +194,9 @@
"CoverImage": "Cover Image",
"RemoveCacheConfirmationMessage": "Are you sure you remove the cache for \"{0}\" article?",
"SuccessfullyRemoved": "Successfully cleared",
"RemoveCache": "Remove Cache"
"RemoveCache": "Remove Cache",
"Language": "Language",
"Optional": "Optional",
"CreateArticleLanguageInfo": "The language in which the article is written"
}
}

5
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json

@ -156,6 +156,9 @@
"RemainingQuestionCount": "Kalan soru sayısı",
"TotalQuestionMustBeGreaterWarningMessage": "Toplam soru sayısı kalan soru sayısından büyük olmalıdır!",
"QuestionCountsMustBeGreaterThanZero": "Toplam soru sayısı ve kalan soru sayısı sıfır veya sıfırdan daha büyük olmalıdır!",
"UnlimitedQuestionCount": "Sınırsız soru sayısı"
"UnlimitedQuestionCount": "Sınırsız soru sayısı",
"Language": "Dil",
"Optional": "Opsiyonel",
"CreateArticleLanguageInfo": "Makalenin yazıldığı dil"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json

@ -33,6 +33,7 @@
"EmailNotValid": "Please enter a valid email address.",
"JoinOurMarketingNewsletter": "Join our marketing newsletter",
"WouldLikeToReceiveMarketingMaterials": "I would like to receive marketing materials like product deals & special offers.",
"StartUsingYourLicenseNow": "Start using your license now!"
"StartUsingYourLicenseNow": "Start using your license now!",
"WelcomePage": "Welcome Page"
}
}

4
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json

@ -99,6 +99,8 @@
"Marketing": "Marketing",
"CommunityPrivacyPolicyConfirmation": "I agree to the Terms & Conditions and <a href=\"https://commercial.abp.io/Privacy\">Privacy Policy</a>.",
"ArticleRequestMessageTitle": "<a href=\"https://github.com/abpframework/abp/issues/new\">Open an issue</a> on the GitHub to request an article/tutorial you want to see on this web site.",
"ArticleRequestMessageBody": "Here, the list of the requested articles by the community. Do you want to write a requested article? Please click to the request and join to the discussion."
"ArticleRequestMessageBody": "Here, the list of the requested articles by the community. Do you want to write a requested article? Please click to the request and join to the discussion.",
"Language": "Language",
"CreateArticleLanguageInfo": "The language in which the article is written"
}
}

1
common.DotSettings

@ -29,6 +29,7 @@
<s:String x:Key="/Default/Environment/InlayHints/CSharpTypeNameHintsOptions/ShowTypeNameHintsForLambdaExpressionParameters/@EntryValue">Never</s:String>
<s:String x:Key="/Default/Environment/InlayHints/CSharpTypeNameHintsOptions/ShowTypeNameHintsForLinqQueryRangeVariables/@EntryValue">Never</s:String>
<s:String x:Key="/Default/Environment/InlayHints/CSharpTypeNameHintsOptions/ShowTypeNameHintsForPatternMatchingExpressions/@EntryValue">Never</s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EFeature_002EServices_002ECpp_002EDaemon_002EInlayHints_002ETypeNameHints_002ECppTypeNameHintsOptionsMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EFeature_002EServices_002ECpp_002EDaemon_002ETypeNameHints_002ECppTypeNameHintsOptionsMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EFeature_002EServices_002ECSharp_002ETypeNameHints_002ECSharpTypeNameHintsOptionsMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/TypeNameHintsOptions/HideTypeNameHintsWhenTypeNameIsEvidentFromVariableName/@EntryValue">False</s:Boolean>

2
common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>4.1.0</Version>
<Version>4.1.0-rc.1</Version>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
<PackageIconUrl>https://abp.io/assets/abp_nupkg.png</PackageIconUrl>
<PackageProjectUrl>https://abp.io/</PackageProjectUrl>

202
docs/en/Blog-Posts/2020-12-18 v4_1_Preview/POST.md

@ -0,0 +1,202 @@
# ABP Framework 4.1 RC Has Been Published
Today, we have released the [ABP Framework](https://abp.io/) (and the [ABP Commercial](https://commercial.abp.io/)) 4.1.0 RC. This blog post introduces the new features and important changes in this new version.
> **The planned release date for the [4.1.0 final](https://github.com/abpframework/abp/milestone/47) version is January 4, 2021**.
## Get Started with the 4.1 RC
If you want to try the version `4.1.0` today, follow the steps below;
1) **Upgrade** the ABP CLI to the version `4.1.0-rc.1` using a command line terminal:
````bash
dotnet tool update Volo.Abp.Cli -g --version 4.1.0-rc.1
````
**or install** if you haven't installed before:
````bash
dotnet tool install Volo.Abp.Cli -g --version 4.1.0-rc.1
````
2) Create a **new application** with the `--preview` option:
````bash
abp new BookStore --preview
````
See the [ABP CLI documentation](https://docs.abp.io/en/abp/latest/CLI) for all the available options.
> You can also use the *Direct Download* tab on the [Get Started](https://abp.io/get-started) page by selecting the **Preview checkbox**.
## Breaking Changes
This version has a minor breaking change if you'd injected a repository by class. This is not a problem for 99% of the applications. However, see [#6677](https://github.com/abpframework/abp/issues/6677) for the solution if that's a breaking change for you.
## What's new with the ABP Framework 4.1
### Module Entity Extensions
Module Entity Extension system provides a simple way of adding new properties to an existing entity defined by a module that is used by your application. This feature is now available also for the open source modules (identity and tenant-management). [The documentation](https://docs.abp.io/en/abp/latest/Module-Entity-Extensions) has been moved into the ABP Framework's documentation.
**Example: Add "SocialSecurityNumber" property to the `IdentityUser` entity**
````csharp
ObjectExtensionManager.Instance.Modules()
.ConfigureIdentity(identity =>
{
identity.ConfigureUser(user =>
{
user.AddOrUpdateProperty<string>( //property type: string
"SocialSecurityNumber", //property name
property =>
{
//validation rules
property.Attributes.Add(new RequiredAttribute());
property.Attributes.Add(
new StringLengthAttribute(64) {
MinimumLength = 4
}
);
//...other configurations for this property
}
);
});
});
````
The new property becomes available on the UI, API and the database. You can even define navigation properties. This provides an easy way to extend existing modules while using them as NuGet packages. See [the document](https://docs.abp.io/en/abp/latest/Module-Entity-Extensions) for details.
### Blazor UI Improvements
Since the Blazor UI is relatively new in the ABP Framework, we continue to add features and make enhancements to fill the gap between other supported UI types.
#### Bundling & Minification
In the version 4.1, we had introduced the `abp bundle` command for the Blazor UI to add global script and style files of the depended modules into the `index.html`. It was a preparation for a real bundling & minification system. With the version 4.2, this command has been completed.
Whenever you add a new module to your Blazor application, just type the `abp bundle` command in a command line terminal;
* It finds all the global script/style files in your application and the modules your application directly or indirectly depends on, ordered by the module dependencies.
* Bundles all the scripts into a single file and minified the file (same for the styles).
* Add the single bundle file to the `index.html` file.
Added a configuration into the `appsettings.json` file in the Blazor application in the application startup template to control the bundling mode:
````js
{
"AbpCli": {
"Bundle": {
"Mode": "BundleAndMinify"
}
}
}
````
Possible values are;
* `BundleAndMinify`: Bundle all the files into a single file and minify the content.
* `Bundle`: Bundle all files into a single file, but not minify.
* `None`: Add files individually, do not bundle.
See the [Global Scripts & Styles](https://docs.abp.io/en/abp/4.1/UI/Blazor/Global-Scripts-Styles) document for details.
#### SubmitButton
`SubmitButton` is a new component that simplifies to save a form:
````html
<SubmitButton Clicked="UpdateEntityAsync" />
````
The main advantages of using this component instead of a standard `Button` with submit type is; It automatically blocks the submit button until the save operation has fully completed. This prevents multiple clicks by user. And it is shorter than doing all manually. See the [document](https://docs.abp.io/en/abp/4.1/UI/Blazor/SubmitButton).
#### Other Blazor UI highlights
* Implemented some **animations** (like opening/closing modals and dropdowns).
* Automatically **focus** to the first input when you open a modal form.
Module extensibility system (mentioned above) for the Blazor UI is under development and not available yet.
## What's new with the ABP Commercial 4.1
### Blazor UI Improvements
We continue to complete missing modules and functionalities for the Blazor UI.
#### Organization Unit Management
Organization Management UI has been implemented for the Blazor UI. Example screenshot:
![blazor-organization-units](blazor-organization-units.png)
#### IdentityServer UI
IdentityServer Management UI is also available for the Blazor UI now:
![blazor-identityserver-ui](blazor-identityserver-ui.png)
### Suite: Navigation Property Selection with Typeahead
We had introduced auto-complete select style navigation property selection. With this release, it is fully supported by all the UI options. So, when you create an CRUD page with ABP Suite for entity that has 1 to Many relation to another entity, you can simply select the target entity with a typeahead style select component. Example screenshot:
![type-ahead](type-ahead.png)
### Spanish Language Translation
We continue to add new language supports for the UI. In this version, translated the UI to **Spanish** language.
![spanish-commercial-translation](spanish-commercial-translation.png)
### Coming: Public Website with Integrated CMS Features
In the next version, the application startup template will come with a public website application option. CMS Kit module will be installed in the website by default, that means newsletter, contact form, comments and some other new features will be directly usable in your applications.
An early screenshot from the public website application home page:
![abp-commercial-public-website](abp-commercial-public-website.png)
## Other News
### ABP Community Contents
A lot of new contents have been published in the ABP Community Web Site in the last two weeks:
* [How to Integrate the Telerik Blazor Components to the ABP Blazor UI](https://community.abp.io/articles/how-to-integrate-the-telerik-blazor-components-to-the-abp-blazor-ui-q8g31abb) by [EngincanV](https://github.com/EngincanV)
* [Using DevExpress Blazor UI Components With the ABP Framework](https://community.abp.io/articles/using-devexpress-blazor-ui-components-with-the-abp-framework-wrpoa8rw) by [@berkansasmaz](https://github.com/berkansasmaz)
* [Creating a new UI theme by copying the Basic Theme (for MVC UI)](https://community.abp.io/articles/creating-a-new-ui-theme-by-copying-the-basic-theme-for-mvc-ui-yt9b18io) by [@ebubekirdinc](https://github.com/ebubekirdinc)
* [Using Angular Material Components With the ABP Framework](https://community.abp.io/members/muhammedaltug) by [@muhammedaltug](https://github.com/muhammedaltug)
* [How to export Excel files from the ABP framework](https://community.abp.io/articles/how-to-export-excel-files-from-the-abp-framework-wm7nnw3n) by [bartvanhoey](https://github.com/bartvanhoey)
* [Creating an Event Organizer Application with the ABP Framework & Blazor UI](https://community.abp.io/articles/creating-an-event-organizer-application-with-the-blazor-ui-wbe0sf2z) by [@hikalkan](https://github.com/hikalkan)
Thanks to all of the contributors. We are waiting for your contributions too. If you want to create content for the ABP Community, please visit [community.abp.io](https://community.abp.io/) website and submit your article.
#### Be a Superhero on Day 1 with ABP.IO
Thanks to [@lprichar](http://github.com/lprichar) prepared an awesome introduction video for the ABP.IO Platform: "[Be a Superhero on Day 1 with ABP.IO](https://www.youtube.com/watch?v=ea0Zx9DLcGA)".
#### New Sample Application: Event Organizer
This is a new example application developed using the ABP Framework and the Blazor UI. See [this article](https://community.abp.io/articles/creating-an-event-organizer-application-with-the-blazor-ui-wbe0sf2z) for a step by step implementation guide.
![event-list-ui](event-list-ui.png)
### Github Discussions
We enabled the [GitHub Discussions for the abp repository](https://github.com/abpframework/abp/discussions) as another place to discuss ideas or get help for the ABP Framework. The ABP core team is spending time participating in discussions and answering to questions as much as possible.
## About the Next Release(s)
Beginning from the next version (4.2.0), we are starting to spend more effort on the **CMS Kit module**. The purpose of this module is to provide CMS primitives (e.g. **comments, tags, reactions, contents**...) and features (e.g. **blog, pages, surveys**) as pre-built and reusable components. Current blog module will be a part of the CMS Kit module.
We will continue to prepare documents, guides, tutorials and examples. And surely, we will continue to make enhancements and optimizations on the current features.
> The planned preview release date for the version 4.2.0 is January 14, 2021 and the final (stable) version release date is January 28, 2021.
Follow the [GitHub milestones](https://github.com/abpframework/abp/milestones) for all the planned ABP Framework version release dates.
## Feedback
Please check out the ABP Framework 4.1.0 RC and [provide feedback](https://github.com/abpframework/abp/issues/new) to help us to release a more stable version. **The planned release date for the [4.1.0 final](https://github.com/abpframework/abp/milestone/45) version is January 4, 2021**.

BIN
docs/en/Blog-Posts/2020-12-18 v4_1_Preview/abp-commercial-public-website.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

BIN
docs/en/Blog-Posts/2020-12-18 v4_1_Preview/blazor-identityserver-ui.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

BIN
docs/en/Blog-Posts/2020-12-18 v4_1_Preview/blazor-organization-units.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
docs/en/Blog-Posts/2020-12-18 v4_1_Preview/event-list-ui.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 KiB

BIN
docs/en/Blog-Posts/2020-12-18 v4_1_Preview/spanish-commercial-translation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

BIN
docs/en/Blog-Posts/2020-12-18 v4_1_Preview/type-ahead.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

2
docs/en/CLI.md

@ -419,4 +419,4 @@ abp bundle [options]
* ```--working-directory``` or ```-wd```: Specifies the working directory. This option is useful when executing directory doesn't contain a Blazor project file.
* ```--force``` or ```-f```: Forces to build project before generating references.
For more details about managing style and script references in Blazor apps, see [Managing Global Scripts & Styles](UI/Blazor/Global-Scripts-Styles.md)
`bundle` command reads the `appsettings.json` file inside the Blazor project for bundling options. For more details about managing style and script references in Blazor apps, see [Managing Global Scripts & Styles](UI/Blazor/Global-Scripts-Styles.md)

2
docs/en/Community-Articles/2020-04-27-Use-Azure-Active-Directory-Authentication-for-MVC-Razor-Page-Applications/POST.md

@ -136,7 +136,7 @@ And that's it, integration is completed. Keep on mind that you can connect any o
## 3. AddMicrosoftIdentityWebAppAuthentication
With .Net 5.0, AzureAd is marked [obsolute](https://github.com/dotnet/aspnetcore/issues/25807) and will not be supported in the near future. However its expanded functionality is available in [microsoft-identity-web](https://github.com/AzureAD/microsoft-identity-web/wiki) packages.
With .Net 5.0, AzureAd is marked [obsolete](https://github.com/dotnet/aspnetcore/issues/25807) and will not be supported in the near future. However its expanded functionality is available in [microsoft-identity-web](https://github.com/AzureAD/microsoft-identity-web/wiki) packages.
Add (or replace with) the new nuget package Microsoft.Identity.Web nuget package](https://www.nuget.org/packages/Microsoft.Identity.Web/).

5
docs/en/Community-Articles/2020-12-10-How-to-Integrate-the-Telerik-Blazor-Component/POST.md

@ -52,7 +52,10 @@ abp new TelerikComponents --ui blazor --database-provider ef
```html
...
<link rel="stylesheet" href="https:unpkg.com/@progress/kendo-theme-default@latest/dist/all.css" />
<link rel="stylesheet" href="_content/Telerik.UI.for.Blazor/css/kendo-theme-default/all.css" />
<!-- For Trial licenses use
<link rel="stylesheet" href="_content/Telerik.UI.for.Blazor.Trial/css/kendo-theme-default/all.css" />
-->
<script src="_content/Telerik.UI.for.Blazor/js/telerik-blazor.js" defer></script>
<!-- For Trial licenses use
<script src="_content/Telerik.UI.for.Blazor.Trial/js/telerik-blazor.js" defer></script>

232
docs/en/PlugIn-Modules.md

@ -1,3 +1,233 @@
# Plug-In Modules
TODO
It is possible to load [modules](Module-Development-Basics.md) as plug-ins. That means you may not reference to a module's assembly in your solution, but you can load that module in the application startup just like any other module.
## Basic Usage
`IServiceCollection.AddApplication<T>()` extension method can get options to configure the plug-in sources.
**Example: Load plugins from a folder**
````csharp
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity.PlugIns;
namespace MyPlugInDemo.Web
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddApplication<MyPlugInDemoWebModule>(options =>
{
options.PlugInSources.AddFolder(@"D:\Temp\MyPlugIns");
});
}
public void Configure(IApplicationBuilder app)
{
app.InitializeApplication();
}
}
}
````
* This is the `Startup` class of a typical ASP.NET Core application.
* `PlugInSources.AddFolder` gets a folder path and to load assemblies (typically `dll`s) in that folder.
That's all. ABP will discover the modules in the given folder, configure and initialize them just like regular modules.
### Plug-In Sources
`options.PlugInSources` is actually a list of `IPlugInSource` implementations and `AddFolder` is just a shortcut for the following expression:
````csharp
options.PlugInSources.Add(new FolderPlugInSource(@"D:\Temp\MyPlugIns"));
````
> `AddFolder()` only looks for the assembly file in the given folder, but not looks for the sub-folders. You can pass `SearchOption.AllDirectories` as a second parameter to explore plug-ins also from the sub-folders, recursively.
There are two more built-in Plug-In Source implementations:
* `PlugInSources.AddFiles()` gets a list of assembly (typically `dll`) files. This is a shortcut of using `FilePlugInSource` class.
* `PlugInSources.AddTypes()` gets a list of module class types. If you use this, you need to load the assemblies of the modules yourself, but it provides flexibility when needed. This is a shortcut of using `TypePlugInSource` class.
If you need, you can create your own `IPlugInSource` implementation and add to the `options.PlugInSources` just like the others.
## Example: Creating a Simple Plug-In
Create a simple **Class Library Project** in a solution:
![simple-plugin-library](images/simple-plugin-library.png)
You can add ABP Framework packages you need to use in the module. At least, you should add the `Volo.Abp.Core` package to the project:
````
Install-Package Volo.Abp.Core
````
Every [module](Module-Development-Basics.md) must declare a class derived from the `AbpModule`. Here, a simple module class that resolves a service and initializes it on the application startup:
````csharp
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
using Volo.Abp.Modularity;
namespace MyPlugIn
{
public class MyPlungInModule : AbpModule
{
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var myService = context.ServiceProvider
.GetRequiredService<MyService>();
myService.Initialize();
}
}
}
````
`MyService` can be any class registered to [Dependency Injection](Dependency-Injection.md) system, as show below:
````csharp
using Microsoft.Extensions.Logging;
using Volo.Abp.DependencyInjection;
namespace MyPlugIn
{
public class MyService : ITransientDependency
{
private readonly ILogger<MyService> _logger;
public MyService(ILogger<MyService> logger)
{
_logger = logger;
}
public void Initialize()
{
_logger.LogInformation("MyService has been initialized");
}
}
}
````
Build the project, open the build folder, find the `MyPlugIn.dll`:
![simple-plug-in-dll-file](images/simple-plug-in-dll-file.png)
Copy `MyPlugIn.dll` into the plug-in folder (`D:\Temp\MyPlugIns` for this example).
If you have configured the main application like described above (see Basic Usage section), you should see the `MyService has been initialized` log in the application startup.
## Example: Creating a Plug-In With Razor Pages
Creating plug-ins with views inside requires a bit more attention.
> This example assumes you've [created a new web application](https://abp.io/get-started) using the application startup template and MVC / Razor Pages UI.
Create a new **Class Library** project in a solution:
![simple-razor-plugin](images/simple-razor-plugin.png)
Edit the `.csproj` file content:
````xml
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<OutputType>Library</OutputType>
<IsPackable>true</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared" Version="4.0.1" />
</ItemGroup>
</Project>
````
* Changed `Sdk` to `Microsoft.NET.Sdk.Web`.
* Added `OutputType` and `IsPackable` properties.
* Added `Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared` NuGet package.
> Depending on [Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared) package is not required. You can reference to a more base package like [Volo.Abp.AspNetCore.Mvc](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc/). However, if you will build a UI page/component, it is suggested to reference to the [Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared) package since it is the most high-level package without depending on a particular [theme](UI/AspNetCore/Theming.md). If there is no problem to depend on a particular theme, you can directly reference to the theme's package to be able to use the theme-specific features in your plug-in.
Then create your module class in the plug-in:
````csharp
using System.IO;
using System.Reflection;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.Modularity;
namespace MyMvcUIPlugIn
{
[DependsOn(typeof(AbpAspNetCoreMvcUiThemeSharedModule))]
public class MyMvcUIPlugInModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<IMvcBuilder>(mvcBuilder =>
{
//Add plugin assembly
mvcBuilder.PartManager.ApplicationParts.Add(new AssemblyPart(typeof(MyMvcUIPlugInModule).Assembly));
//Add views assembly
var viewDllPath = Path.Combine(Path.GetDirectoryName(typeof(MyMvcUIPlugInModule).Assembly.Location), "MyMvcUIPlugIn.Views.dll");
var viewAssembly = new CompiledRazorAssemblyPart(Assembly.LoadFrom(viewDllPath));
mvcBuilder.PartManager.ApplicationParts.Add(viewAssembly);
});
}
}
}
````
* Depending on the `AbpAspNetCoreMvcUiThemeSharedModule` since we added the related NuGet package.
* Adding the plug-in's assembly to the `PartManager` of ASP.NET Core MVC. This is required by ASP.NET Core. Otherwise, your controllers inside the plug-in doesn't work.
* Adding the plug-in's views assembly to the `PartManager` of ASP.NET Core MVC. This is required by ASP.NET Core. Otherwise, your views inside the plug-in doesn't work.
You can now add a razor page, like `MyPlugInPage.cshtml` inside the `Pages` folder:
````html
@page
@model MyMvcUIPlugIn.Pages.MyPlugInPage
<h1>Welcome to my plug-in page</h1>
<p>This page is located inside a plug-in module! :)</p>
````
Now, you can build the plug-in project. It will produce the following output:
![simple-razor-plug-in-dll-file](images/simple-razor-plug-in-dll-file.png)
Copy the `MyMvcUIPlugIn.dll` and `MyMvcUIPlugIn.Views.dll` into the plug-in folder (`D:\Temp\MyPlugIns` for this example).
If you have configured the main application like described above (see Basic Usage section), you should be able to visit the `/MyPlugInPage` URL when your application:
![simple-plugin-output](images/simple-plugin-output.png)
## Discussions
In real world, your plug-in may have some external dependencies. Also, your application might be designed to support plug-ins. All these are your own system requirements. What ABP does is just loading modules on the application startup. What you do inside that modules is up to you.
However, we can provide a few suggestions for some common cases.
### Library Dependencies
For package/dll dependencies, you can copy the related dlls to the plug-in folder. ABP automatically loads all assemblies in the folder and your plug-in will work as expected.
> See [Microsoft's documentation](https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support#plugin-with-library-dependencies) for some additional explanations for that case.
### Database Schema
If your module uses a relational database and [Entity Framework Core](Entity-Framework-Core.md), it will need to have its tables available in the database. There are different ways to ensure the tables have been created when an application uses the plug-in. Some examples;
1. The Plugin may check if the database tables does exists and create the tables on the application startup or migrate them if the plug-in has been updated and requires some schema changes. You can use EF Core's migration API to do that.
2. You can improve the `DbMigrator` application to find migrations of the plug-ins and execute them.
There may be other solutions. For example, if your DB admin doesn't allow you to change the database schema in the application code, you may need to manually send a SQL file to the database admin to apply it to the database.

1
docs/en/Road-Map.md

@ -2,6 +2,7 @@
You can always check the milestone planning and the prioritized backlog issues on [the GitHub repository](https://github.com/abpframework/abp/milestones) for a detailed road map. Here, a list of some major items in the backlog;
* CMS Kit: A set of reusable, extensible and composable Content Management System features.
* [#2882](https://github.com/abpframework/abp/issues/2882) / Providing a gRPC integration infrastructure (while it is [already possible](https://github.com/abpframework/abp-samples/tree/master/GrpcDemo) to create or consume gRPC endpoints for your application, we plan to create endpoints for the [standard application modules](https://docs.abp.io/en/abp/latest/Modules/Index))
* [#236](https://github.com/abpframework/abp/issues/236) Resource based authorization system
* [#6132](https://github.com/abpframework/abp/issues/6132) A New Theme alternative to the Basic Theme

15
docs/en/Samples/Index.md

@ -27,6 +27,9 @@ While there is no Razor Pages & MongoDB combination, you can check both document
### Other Samples
* **Event Organizer**: A sample application to create events (meetups) and allow others to register the events. Developed using EF Core and Blazor UI.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/EventOrganizer)
* [Article](https://community.abp.io/articles/creating-an-event-organizer-application-with-the-blazor-ui-wbe0sf2z)
* **Entity Framework Migrations**: A solution to demonstrate how to split your application into multiple databases each database contains different modules.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/EfCoreMigrationDemo)
* [EF Core database migrations document](../Entity-Framework-Core-Migrations.md)
@ -59,6 +62,18 @@ While there is no Razor Pages & MongoDB combination, you can check both document
* [Customize the SignIn Manager](https://community.abp.io/articles/how-to-customize-the-signin-manager-3e858753)
* **GRPC Demo**: Shows how to add a gRPC service to an ABP Framework based web application and consume it from a console application.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/GrpcDemo)
* **Telerik Blazor Integration**: Shows how to install and use Telerik Blazor components with the ABP Framework.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/DevExpress-Blazor)
* [Article](https://community.abp.io/articles/using-devexpress-blazor-ui-components-with-the-abp-framework-wrpoa8rw)
* **Angular Material Integration**: Implemented the web application tutorial using the Angular Material library.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/AcmeBookStoreAngularMaterial)
* [Article](https://community.abp.io/articles/using-angular-material-components-with-the-abp-framework-af8ft6t9)
* **DevExtreme Angular Component Integration**: How to install and use DevExtreme components in the ABP Framework Angular UI.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/DevExtreme-Angular)
* [Article](https://community.abp.io/articles/using-devextreme-angular-components-with-the-abp-framework-x5nyvj3i)
* **DevExtreme MVC / Razor Pages Component Integration**: How to install and use DevExtreme components in the ABP Framework MVC / Razor Pages UI.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/DevExtreme-Mvc)
* [Article](https://community.abp.io/articles/using-devextreme-components-with-the-abp-framework-zb8z7yqv)
* **Empty ASP.NET Core Application**: The most basic ASP.NET Core application with the ABP Framework installed.
* [Source code](https://github.com/abpframework/abp-samples/tree/master/BasicAspNetCoreApplication)
* [Documentation](../Getting-Started-AspNetCore-Application.md)

4
docs/en/Samples/Microservice-Demo.md

@ -19,7 +19,7 @@ This sample aims to demonstrate a simple yet complete microservice solution;
* Has a **console application** to show the simplest way of using a service by authenticating.
* Uses [Redis](https://redis.io/) for **distributed caching**.
* Uses [RabbitMQ](https://www.rabbitmq.com/) for service-to-service **messaging**.
* Uses [Docker](https://www.docker.com/) & [Kubernates](https://kubernetes.io/) to **deploy** & run all services and applications.
* Uses [Docker](https://www.docker.com/) & [Kubernetes](https://kubernetes.io/) to **deploy** & run all services and applications.
* Uses [Elasticsearch](https://www.elastic.co/products/elasticsearch) & [Kibana](https://www.elastic.co/products/kibana) to store and visualize the logs (written using [Serilog](https://serilog.net/)).
The diagram below shows the system:
@ -1416,4 +1416,4 @@ An Audit Log record has a `CorrelationId` property that can be used to track a r
### Multi-Tenancy
The solution has been configured to provide a [multi-tenant](../Multi-Tenancy.md) system, where each tenant can have their isolated users, roles, permissions and other data.
The solution has been configured to provide a [multi-tenant](../Multi-Tenancy.md) system, where each tenant can have their isolated users, roles, permissions and other data.

11
docs/en/UI/AspNetCore/Tag-Helpers/Modals.md

@ -11,7 +11,7 @@ Basic usage:
````xml
<abp-button button-type="Primary" data-toggle="modal" data-target="#myModal">Launch modal</abp-button>
<abp-modal centered="true" size="Large" id="myModal">
<abp-modal centered="true" scrollable="true" size="Large" id="myModal">
<abp-modal-header title="Modal title"></abp-modal-header>
<abp-modal-body>
Woohoo, you're reading this text in a modal!
@ -33,6 +33,13 @@ A value indicates the positioning of the modal. Should be one of the following v
* `false` (default value)
* `true`
### Scrollable
A value indicates the scrolling of the modal. Should be one of the following values:
* `false` (default value)
* `true`
### size
A value indicates the size of the modal. Should be one of the following values:
@ -78,4 +85,4 @@ A value indicates the positioning of your modal footer buttons. Should be one of
* `Center`
* `Around`
* `Between`
* `End`
* `End`

25
docs/en/UI/Blazor/Components/SubmitButton.md

@ -0,0 +1,25 @@
# Blazor UI: SubmitButton component
`SubmitButton` is a simple wrapper around `Button` component. It is used to be placed inside of page Form or Modal dialogs where it can response to user actions and to be activated as a default button by pressing an ENTER key. Once clicked it will go into the `disabled` state and also it will show a small loading indicator until clicked event is finished.
## Quick Example
```html
<SubmitButton Clicked="@YourSaveOperation" />
```
Notice that we didn't specify any text, like `Save Changes`. This is because `SubmitButton` will by default pull text from the localization. If you want to change that you either specify a localization key or you can add custom content.
### With localization key
```html
<SubmitButton Clicked="@YourSaveOperation" SaveResourceKey="YourSaveName" />
```
### With custom content
```html
<SubmitButton Clicked="@YourSaveOperation">
@L["Save"]
</SubmitButton>
```

47
docs/en/UI/Blazor/Global-Scripts-Styles.md

@ -35,4 +35,49 @@ namespace MyProject.Blazor
> There is a BundleContributor class implementing `IBundleContributor` interface coming by default with the startup templates. So, most of the time, you don't need to add it manually.
> Bundle command adds style and script references individually. Bundling and minification support will be added to incoming releases.
## Bundling And Minification
`abp bundle` command offers bundling and minification support for client-side resources(JavaScript and CSS files). `abp bundle` command reads the `appsettings.json` file inside the Blazor project and bundles the resources according to the configuration. You can find the bundle configurations inside `AbpCli.Bundle` element.
Here are the options that you can control inside the `appsettings.json` file.
`Mode`: Bundling and minification mode. Possible values are
* `BundleAndMinify`: Bundle all the files into a single file and minify the content.
* `Bundle`: Bundle all files into a single file, but not minify.
* `None`: Add files individually, do not bundle.
`Name`: Bundle file name. Default value is `global`.
`Parameters`: You can define additional key/value pair parameters inside this section. `abp bundle` command automatically sends these parameters to the bundle contributors, and you can check these parameters inside the bundle contributor, take some actions according to these values.
Let's say that you want to exclude some resources from the bundle and control this action using the bundle parameters. You can add a parameter to the bundle section like below.
```json
"AbpCli": {
"Bundle": {
"Mode": "BundleAndMinify", /* Options: None, Bundle, BundleAndMinify */
"Name": "global",
"Parameters": {
"ExcludeThemeFromBundle":"true"
}
}
}
```
You can check this parameter and take action like below.
```csharp
public class MyProjectNameBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
}
public void AddStyles(BundleContext context)
{
var excludeThemeFromBundle = bool.Parse(context.Parameters.GetValueOrDefault("ExcludeThemeFromBundle"));
context.Add("mytheme.css", excludeFromBundle: excludeThemeFromBundle);
context.Add("main.css");
}
}
```

12
docs/en/docs-nav.json

@ -349,7 +349,8 @@
"path": "Module-Development-Basics.md"
},
{
"text": "Plug-In Modules"
"text": "Plug-In Modules",
"path": "PlugIn-Modules.md"
},
{
"text": "Customizing the Application Modules",
@ -697,6 +698,15 @@
}
]
},
{
"text": "Other Components",
"items": [
{
"text": "SubmitButton",
"path": "UI/Blazor/SubmitButton.md"
}
]
},
{
"text": "Settings",
"path": "UI/Blazor/Settings.md"

BIN
docs/en/images/simple-plug-in-dll-file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/en/images/simple-plugin-library.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/en/images/simple-plugin-output.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
docs/en/images/simple-razor-plug-in-dll-file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
docs/en/images/simple-razor-plugin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

1979
docs/zh-Hans/Domain-Driven-Design-Implementation-Guide.md

File diff suppressed because it is too large

11
docs/zh-Hans/UI/AspNetCore/Tag-Helpers/Modals.md

@ -9,7 +9,7 @@
````xml
<abp-button button-type="Primary" data-toggle="modal" data-target="#myModal">Launch modal</abp-button>
<abp-modal centered="true" size="Large" id="myModal">
<abp-modal centered="true" scrollable="true" size="Large" id="myModal">
<abp-modal-header title="Modal title"></abp-modal-header>
<abp-modal-body>
Woohoo, you're reading this text in a modal!
@ -31,6 +31,13 @@
* `false` (默认值)
* `true`
### Scrollable
指定模态框滚动. 应为以下值之一:
* `false` (默认值)
* `true`
### size
指定模态框的大小. 应为以下值之一:
@ -76,4 +83,4 @@
* `Center`
* `Around`
* `Between`
* `End`
* `End`

78
docs/zh-Hans/docs-nav.json

@ -338,53 +338,57 @@
"path": "Best-Practices/Index.md"
}
]
}
]
},
{
"text": "领域驱动设计",
"items": [
{
"text": "概述",
"path": "Domain-Driven-Design.md"
},
{
"text": "领域层",
"text": "领域驱动设计",
"items": [
{
"text": "实体&聚合根",
"path": "Entities.md"
},
{
"text": "值对象"
},
{
"text": "仓储",
"path": "Repositories.md"
},
{
"text": "领域服务"
"text": "概述",
"path": "Domain-Driven-Design.md"
},
{
"text": "规约",
"path": "Specifications.md"
}
]
},
{
"text": "应用服务层",
"items": [
{
"text": "应用服务",
"path": "Application-Services.md"
"text": "领域层",
"items": [
{
"text": "实体&聚合根",
"path": "Entities.md"
},
{
"text": "值对象"
},
{
"text": "仓储",
"path": "Repositories.md"
},
{
"text": "领域服务"
},
{
"text": "规约",
"path": "Specifications.md"
}
]
},
{
"text": "数据传输对象(DTO)",
"path": "Data-Transfer-Objects.md"
"text": "应用服务层",
"items": [
{
"text": "应用服务",
"path": "Application-Services.md"
},
{
"text": "数据传输对象(DTO)",
"path": "Data-Transfer-Objects.md"
},
{
"text": "工作单元",
"path": "Unit-Of-Work.md"
}
]
},
{
"text": "工作单元",
"path": "Unit-Of-Work.md"
"text": "指南: 实现DDD",
"path": "Domain-Driven-Design-Implementation-Guide.md"
}
]
},

BIN
docs/zh-Hans/images/abp-dynamic-form-result.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/zh-Hans/images/abp-form-input-validation-error-french-name.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
docs/zh-Hans/images/abp-form-input-validation-error-french.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
docs/zh-Hans/images/abp-form-input-validation-error.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
docs/zh-Hans/images/ajax-error.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/zh-Hans/images/aspnetcore-web-tests-in-solution.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
docs/zh-Hans/images/basic-theme-account-layout.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
docs/zh-Hans/images/basic-theme-application-layout-blazor.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
docs/zh-Hans/images/basic-theme-application-layout-parts.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
docs/zh-Hans/images/basic-theme-application-layout.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
docs/zh-Hans/images/blazor-message-confirm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
docs/zh-Hans/images/blazor-message-error.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
docs/zh-Hans/images/blazor-message-success.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
docs/zh-Hans/images/blazor-notification-bell-component.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/zh-Hans/images/blazor-notification-success.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
docs/zh-Hans/images/blazor-page-alert-example.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/zh-Hans/images/bookstore-branding-blazor.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
docs/zh-Hans/images/bookstore-logo-blazor.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/zh-Hans/images/branding-appname.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
docs/zh-Hans/images/branding-nobrand.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
docs/zh-Hans/images/breadcrumbs-example.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

BIN
docs/zh-Hans/images/datatables-custom-render-date.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
docs/zh-Hans/images/datatables-default-render-date.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/zh-Hans/images/datatables-example.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
docs/zh-Hans/images/datatables-row-actions-confirmation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
docs/zh-Hans/images/datatables-row-actions-icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
docs/zh-Hans/images/datatables-row-actions.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
docs/zh-Hans/images/db-options.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
docs/zh-Hans/images/ddd-microservice-simple.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
docs/zh-Hans/images/domain-driven-design-aggregate-keep-small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

BIN
docs/zh-Hans/images/domain-driven-design-clean-architecture.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
docs/zh-Hans/images/domain-driven-design-domain-vs-application-logic.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/zh-Hans/images/domain-driven-design-entity-primary-keys.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
docs/zh-Hans/images/domain-driven-design-example-domain-schema.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

BIN
docs/zh-Hans/images/domain-driven-design-issue-aggregate-diagram.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

BIN
docs/zh-Hans/images/domain-driven-design-layers.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/zh-Hans/images/domain-driven-design-multiple-applications.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
docs/zh-Hans/images/domain-driven-design-project-relations.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/zh-Hans/images/domain-driven-design-reference-by-id-sample.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

BIN
docs/zh-Hans/images/domain-driven-design-vs-solution.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/zh-Hans/images/domain-driven-design-web-request-flow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
docs/zh-Hans/images/example-global-styles.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/zh-Hans/images/features-action.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/zh-Hans/images/features-modal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
docs/zh-Hans/images/issue-first-test.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
docs/zh-Hans/images/issue-list.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/zh-Hans/images/js-message-confirm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
docs/zh-Hans/images/js-message-error.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/zh-Hans/images/js-message-success.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/zh-Hans/images/js-notify-success.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/zh-Hans/images/lepton-theme-account-layout.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
docs/zh-Hans/images/lepton-theme-application-layout.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

BIN
docs/zh-Hans/images/lepton-theme-blazor-layout.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

BIN
docs/zh-Hans/images/modal-example-product-create.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
docs/zh-Hans/images/modal-example-product-info.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

BIN
docs/zh-Hans/images/modal-manager-cancel-warning.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
docs/zh-Hans/images/modal-manager-example-modal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
docs/zh-Hans/images/modal-manager-validation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
docs/zh-Hans/images/modal-page-on-rider.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/zh-Hans/images/nav-main-menu-administration.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
docs/zh-Hans/images/nav-main-menu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
docs/zh-Hans/images/page-alert-account-layout.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/zh-Hans/images/page-alert-example.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
docs/zh-Hans/images/product-create-modal-page-on-rider.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/zh-Hans/images/react-native-introduction.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 KiB

BIN
docs/zh-Hans/images/solution-test-projects.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

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

Loading…
Cancel
Save