diff --git a/common.props b/common.props index 7ed69bb211..fce50ee6a9 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 5.0.0-beta.3 + 5.0.0-rc.1 $(NoWarn);CS1591;CS0436 https://abp.io/assets/abp_nupkg.png https://abp.io/ diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/POST.md b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/POST.md similarity index 90% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/POST.md rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/POST.md index b370b98eae..e1bc93e23a 100644 --- a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/POST.md +++ b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/POST.md @@ -1,25 +1,25 @@ -# ABP Platform 5.0 Beta Has Been Released +# ABP.IO Platform 5.0 RC.1 Has Been Released -Today, we are excited to release the [ABP Framework](https://abp.io/) and the [ABP Commercial](https://commercial.abp.io/) version **5.0 Beta**. This blog post introduces the new features and important changes in this new version. +Today, we are excited to release the [ABP Framework](https://abp.io/) and the [ABP Commercial](https://commercial.abp.io/) version **5.0 RC** (Release Candidate). This blog post introduces the new features and important changes in this new version. -> **The planned release date for the [5.0.0 Release Candidate](https://github.com/abpframework/abp/milestone/51) version is November, 2021**. +> **The planned release date for the [5.0.0 Stable](https://github.com/abpframework/abp/milestone/57) version is December 14, 2021**. Please try this version and provide feedback for a more stable ABP version 5.0! Thank you all. -## Get Started with the 5.0 Beta +## Get Started with the 5.0 RC -follow the steps below to try the version 5.0.0 beta today; +follow the steps below to try the version 5.0.0 RC today; -1) **Upgrade** the ABP CLI to the version `5.0.0-beta.3` using a command line terminal: +1) **Upgrade** the ABP CLI to the version `5.0.0-rc.1` using a command line terminal: ````bash -dotnet tool update Volo.Abp.Cli -g --version 5.0.0-beta.3 +dotnet tool update Volo.Abp.Cli -g --version 5.0.0-rc.1 ```` **or install** if you haven't installed before: ````bash -dotnet tool install Volo.Abp.Cli -g --version 5.0.0-beta.3 +dotnet tool install Volo.Abp.Cli -g --version 5.0.0-rc.1 ```` 2) Create a **new application** with the `--preview` option: @@ -32,33 +32,24 @@ See the [ABP CLI documentation](https://docs.abp.io/en/abp/latest/CLI) for all t > You can also use the *Direct Download* tab on the [Get Started](https://abp.io/get-started) page by selecting the **Preview checkbox**. -### Visual Studio Upgrade - -As .NET 6 is a preview version you need to make changes on the Visual Studio 2019. -If you want to run a .NET 6 project on Visual Studio 2019, you need to install the latest .NET SDK 6 from https://dotnet.microsoft.com/download/dotnet/6.0 -and also enable the `Use Previews of the .NET SDK` option from Visual Studio 2019 options. See the screenshot: - -![Enable Using Previews of the .NET SDK ](use-preview-visual-studio.png) - - -Alternatively you can download the latest **Visual Studio 2022** preview to run/create the .NET 6 projects. We have tested the ABP solution with the Visual Studio 2022 `17.0.0 Preview 4.1`. Check out https://visualstudio.microsoft.com/vs/preview/ for more information. +You can use any IDE that supports .NET 6.0, like **[Visual Studio 2022](https://visualstudio.microsoft.com/downloads/)**. ### Migration Notes & Breaking Changes This is a major version and there are some breaking changes and upgrade steps. Here, a list of important breaking changes in this version: -* Upgraded to .NET 6.0-rc.1, so you need to move your solution to .NET 6.0 if you want to use the ABP 5.0. +* Upgraded to .NET 6.0, so you need to move your solution to .NET 6.0 if you want to use the ABP 5.0. * Upgraded to Bootstrap 5. This is the most important breaking change in ABP 5.0 and you should take care of it. * `IRepository` doesn't inherit from `IQueryable` anymore. It was already made obsolete in 4.2. * Removed NGXS and states from the Angular UI. * Removed gulp dependency from the MVC / Razor Pages UI in favor of `abp install-libs` command of the ABP CLI. * Deprecated `EntityCreatingEventData`, `EntityUpdatingEventData`, `EntityDeletingEventData` and `EntityChangingEventData` classes. See [#9897](https://github.com/abpframework/abp/issues/9897). -Please see the [migration document](https://docs.abp.io/en/abp/5.0/Migration-Guides/Abp-5_0) for all the details. You can also see all [the closed issues and pull request](https://github.com/abpframework/abp/releases/tag/5.0.0-beta.1) on GitHub. +Please see the [migration document](https://docs.abp.io/en/abp/5.0/Migration-Guides/Abp-5_0) for all the details. You can also see all [the closed issues and pull requests](https://github.com/abpframework/abp/milestone/51). ## What's new with 5.0? -In this section, I will introduce some major features released with beta version. +In this section, I will introduce some major features released with this version. ### Static (Generated) Client Proxies for C# and JavaScript @@ -308,12 +299,14 @@ This books is a complete guide to start working with the ABP Framework, explore ### New ABP Community posts -Here, the latest posts added to the [ABP community](https://community.abp.io/): +Here, some of the latest posts added to the [ABP community](https://community.abp.io/): +* [Many to many relationship with ABP and EF Core](https://community.abp.io/articles/many-to-many-relationship-with-abp-and-ef-core-g7rm2qut) +* [Add a new module to your ABP application](https://community.abp.io/articles/abp-framework-add-a-new-module-to-your-abp-application-eogrfm88) +* [Changing UI Theme for ABP MVC / Razor Pages UI](https://community.abp.io/articles/changing-ui-theme-for-abp-mvc-razor-pages-ui-ravx6a0o) +* [Create a Windows Service with the ABP Framework](https://community.abp.io/articles/create-a-windows-service-with-abp-framework-hop4dtra) * [Deploy ABP Framework .NET Core tiered application to docker swarm](https://community.abp.io/articles/deploy-abp-framework-dotnet-core-tiered-app-to-docker-swarm-kcrjbjec) -* [How to override localization strings of depending modules](https://community.abp.io/articles/how-to-override-localization-strings-of-depending-modules-ba1oy03l) * [Centralized logging for .NET Core ABP microservices application using Seq](https://community.abp.io/articles/centralized-logging-for-.net-core-abp-microservices-app-using-seq-g1xe7e7y) -* [Extend Tenant management and add custom host to your ABP application](https://community.abp.io/articles/extend-tenant-management-and-add-custom-host-to-your-abp-app-lwmi9lr5) Thanks to the ABP Community for all the contents they have published. You can also post your ABP and .NET related (text or video) contents to the ABP Community. diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/abp-book-cover.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/abp-book-cover.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/abp-book-cover.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/abp-book-cover.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/csharp-proxies.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/csharp-proxies.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/csharp-proxies.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/csharp-proxies.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/email-settings.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/email-settings.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/email-settings.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/email-settings.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/enable-email-tenant.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/enable-email-tenant.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/enable-email-tenant.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/enable-email-tenant.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/hangfire-dashboard.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/hangfire-dashboard.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/hangfire-dashboard.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/hangfire-dashboard.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/js-proxies.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/js-proxies.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/js-proxies.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/js-proxies.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/tenant-features.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/tenant-features.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/tenant-features.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/tenant-features.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/use-preview-visual-studio.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/use-preview-visual-studio.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/use-preview-visual-studio.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/use-preview-visual-studio.png diff --git a/docs/en/Blog-Posts/2021-11-02 v5_0_Beta/user-active.png b/docs/en/Blog-Posts/2021-11-18 v5_0_Preview/user-active.png similarity index 100% rename from docs/en/Blog-Posts/2021-11-02 v5_0_Beta/user-active.png rename to docs/en/Blog-Posts/2021-11-18 v5_0_Preview/user-active.png diff --git a/docs/en/Modules/Setting-Management.md b/docs/en/Modules/Setting-Management.md index 68b06372eb..e54993cf79 100644 --- a/docs/en/Modules/Setting-Management.md +++ b/docs/en/Modules/Setting-Management.md @@ -88,7 +88,7 @@ Setting Management module is extensible, just like the [setting system](../Setti If you want to create your own provider, implement the `ISettingManagementProvider` interface or inherit from the `SettingManagementProvider` base class: ````csharp -public class CustomSettingProvider : SettingManagementProvider +public class CustomSettingProvider : SettingManagementProvider, ITransientDependency { public override string Name => "Custom"; diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 65e4ab93f2..74d7c91e16 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^5.0.0-beta.3", + "@abp/aspnetcore.mvc.ui.theme.shared": "^5.0.0-rc.1", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css deleted file mode 100644 index e54d56455f..0000000000 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css +++ /dev/null @@ -1,212 +0,0 @@ -table.dataTable { - clear: both; - margin-top: 6px !important; - margin-bottom: 6px !important; - max-width: none !important; - border-collapse: separate !important; - border-spacing: 0; -} -table.dataTable td, -table.dataTable th { - -webkit-box-sizing: content-box; - box-sizing: content-box; -} -table.dataTable td.dataTables_empty, -table.dataTable th.dataTables_empty { - text-align: center; -} -table.dataTable.nowrap th, -table.dataTable.nowrap td { - white-space: nowrap; -} - -div.dataTables_wrapper div.dataTables_length label { - font-weight: normal; - text-align: left; - white-space: nowrap; -} -div.dataTables_wrapper div.dataTables_length select { - width: auto; - display: inline-block; -} -div.dataTables_wrapper div.dataTables_filter { - text-align: right; -} -div.dataTables_wrapper div.dataTables_filter label { - font-weight: normal; - white-space: nowrap; - text-align: left; -} -div.dataTables_wrapper div.dataTables_filter input { - margin-left: 0.5em; - display: inline-block; - width: auto; -} -div.dataTables_wrapper div.dataTables_info { - padding-top: 0.85em; - white-space: nowrap; -} -div.dataTables_wrapper div.dataTables_paginate { - margin: 0; - white-space: nowrap; - text-align: right; -} -div.dataTables_wrapper div.dataTables_paginate ul.pagination { - margin: 2px 0; - white-space: nowrap; - justify-content: flex-end; -} -div.dataTables_wrapper div.dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 200px; - margin-left: -100px; - margin-top: -26px; - text-align: center; - padding: 1em 0; -} - -table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, -table.dataTable thead > tr > td.sorting_asc, -table.dataTable thead > tr > td.sorting_desc, -table.dataTable thead > tr > td.sorting { - padding-right: 30px; -} -table.dataTable thead > tr > th:active, -table.dataTable thead > tr > td:active { - outline: none; -} -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - cursor: pointer; - position: relative; -} -table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, -table.dataTable thead .sorting_asc:before, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc:before, -table.dataTable thead .sorting_desc:after, -table.dataTable thead .sorting_asc_disabled:before, -table.dataTable thead .sorting_asc_disabled:after, -table.dataTable thead .sorting_desc_disabled:before, -table.dataTable thead .sorting_desc_disabled:after { - position: absolute; - bottom: 0.9em; - display: block; - opacity: 0.3; -} -table.dataTable thead .sorting:before, -table.dataTable thead .sorting_asc:before, -table.dataTable thead .sorting_desc:before, -table.dataTable thead .sorting_asc_disabled:before, -table.dataTable thead .sorting_desc_disabled:before { - right: 1em; - content: "\2191"; -} -table.dataTable thead .sorting:after, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc:after, -table.dataTable thead .sorting_asc_disabled:after, -table.dataTable thead .sorting_desc_disabled:after { - right: 0.5em; - content: "\2193"; -} -table.dataTable thead .sorting_asc:before, -table.dataTable thead .sorting_desc:after { - opacity: 1; -} -table.dataTable thead .sorting_asc_disabled:before, -table.dataTable thead .sorting_desc_disabled:after { - opacity: 0; -} - -div.dataTables_scrollHead table.dataTable { - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody table { - border-top: none; - margin-top: 0 !important; - margin-bottom: 0 !important; -} -div.dataTables_scrollBody table thead .sorting:before, -div.dataTables_scrollBody table thead .sorting_asc:before, -div.dataTables_scrollBody table thead .sorting_desc:before, -div.dataTables_scrollBody table thead .sorting:after, -div.dataTables_scrollBody table thead .sorting_asc:after, -div.dataTables_scrollBody table thead .sorting_desc:after { - display: none; -} -div.dataTables_scrollBody table tbody tr:first-child th, -div.dataTables_scrollBody table tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot > .dataTables_scrollFootInner { - box-sizing: content-box; -} -div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { - margin-top: 0 !important; - border-top: none; -} - -@media screen and (max-width: 767px) { - div.dataTables_wrapper div.dataTables_length, - div.dataTables_wrapper div.dataTables_filter, - div.dataTables_wrapper div.dataTables_info, - div.dataTables_wrapper div.dataTables_paginate { - text-align: center; - } - div.dataTables_wrapper div.dataTables_paginate ul.pagination { - justify-content: center !important; - } -} -table.dataTable.table-sm > thead > tr > th :not(.sorting_disabled) { - padding-right: 20px; -} -table.dataTable.table-sm .sorting:before, -table.dataTable.table-sm .sorting_asc:before, -table.dataTable.table-sm .sorting_desc:before { - top: 5px; - right: 0.85em; -} -table.dataTable.table-sm .sorting:after, -table.dataTable.table-sm .sorting_asc:after, -table.dataTable.table-sm .sorting_desc:after { - top: 5px; -} - -table.table-bordered.dataTable { - border-right-width: 0; -} -table.table-bordered.dataTable th, -table.table-bordered.dataTable td { - border-left-width: 0; -} -table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, -table.table-bordered.dataTable td:last-child, -table.table-bordered.dataTable td:last-child { - border-right-width: 1px; -} -table.table-bordered.dataTable tbody th, -table.table-bordered.dataTable tbody td { - border-bottom-width: 0; -} - -div.dataTables_scrollHead table.table-bordered { - border-bottom-width: 0; -} - -div.table-responsive > div.dataTables_wrapper > div.row { - margin: 0; -} -div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { - padding-left: 0; -} -div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { - padding-right: 0; -} diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs5/css/dataTables.bootstrap5.css similarity index 59% rename from modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css rename to modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs5/css/dataTables.bootstrap5.css index a181dc4dae..3b84befc10 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs5/css/dataTables.bootstrap5.css @@ -1,4 +1,90 @@ @charset "UTF-8"; +td.dt-control { + background: url("https://www.datatables.net/examples/resources/details_open.png") no-repeat center center; + cursor: pointer; +} + +tr.dt-hasChild td.dt-control { + background: url("https://www.datatables.net/examples/resources/details_close.png") no-repeat center center; +} + +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +/*! Bootstrap 5 integration for DataTables + * + * ©2020 SpryMedia Ltd, all rights reserved. + * License: MIT datatables.net/license/mit + */ table.dataTable { clear: both; margin-top: 6px !important; @@ -93,7 +179,7 @@ table.dataTable > thead .sorting_asc_disabled:after, table.dataTable > thead .sorting_desc_disabled:before, table.dataTable > thead .sorting_desc_disabled:after { position: absolute; - bottom: 0.9em; + bottom: 0.5em; display: block; opacity: 0.3; } @@ -126,21 +212,21 @@ div.dataTables_scrollHead table.dataTable { margin-bottom: 0 !important; } -div.dataTables_scrollBody table { +div.dataTables_scrollBody > table { border-top: none; margin-top: 0 !important; margin-bottom: 0 !important; } -div.dataTables_scrollBody table thead .sorting:before, -div.dataTables_scrollBody table thead .sorting_asc:before, -div.dataTables_scrollBody table thead .sorting_desc:before, -div.dataTables_scrollBody table thead .sorting:after, -div.dataTables_scrollBody table thead .sorting_asc:after, -div.dataTables_scrollBody table thead .sorting_desc:after { +div.dataTables_scrollBody > table > thead .sorting:before, +div.dataTables_scrollBody > table > thead .sorting_asc:before, +div.dataTables_scrollBody > table > thead .sorting_desc:before, +div.dataTables_scrollBody > table > thead .sorting:after, +div.dataTables_scrollBody > table > thead .sorting_asc:after, +div.dataTables_scrollBody > table > thead .sorting_desc:after { display: none; } -div.dataTables_scrollBody table tbody tr:first-child th, -div.dataTables_scrollBody table tbody tr:first-child td { +div.dataTables_scrollBody > table > tbody tr:first-child th, +div.dataTables_scrollBody > table > tbody tr:first-child td { border-top: none; } @@ -181,18 +267,27 @@ table.dataTable.table-sm .sorting_desc:after { table.table-bordered.dataTable { border-right-width: 0; } +table.table-bordered.dataTable thead tr:first-child th, +table.table-bordered.dataTable thead tr:first-child td { + border-top-width: 1px; +} table.table-bordered.dataTable th, table.table-bordered.dataTable td { border-left-width: 0; } +table.table-bordered.dataTable th:first-child, table.table-bordered.dataTable th:first-child, +table.table-bordered.dataTable td:first-child, +table.table-bordered.dataTable td:first-child { + border-left-width: 1px; +} table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable td:last-child, table.table-bordered.dataTable td:last-child { border-right-width: 1px; } -table.table-bordered.dataTable tbody th, -table.table-bordered.dataTable tbody td { - border-bottom-width: 0; +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-bottom-width: 1px; } div.dataTables_scrollHead table.table-bordered { @@ -208,3 +303,10 @@ div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:first div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:last-child { padding-right: 0; } + +table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) { + --bs-table-accent-bg: transparent; +} +table.dataTable.table-striped > tbody > tr.odd { + --bs-table-accent-bg: var(--bs-table-striped-bg); +} diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs5/js/dataTables.bootstrap5.js similarity index 95% rename from modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js rename to modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs5/js/dataTables.bootstrap5.js index bb7b7738ca..1bf51f6adc 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net-bs5/js/dataTables.bootstrap5.js @@ -1,9 +1,9 @@ -/*! DataTables Bootstrap 4 integration - * ©2011-2017 SpryMedia Ltd - datatables.net/license +/*! DataTables Bootstrap 5 integration + * 2020 SpryMedia Ltd - datatables.net/license */ /** - * DataTables integration for Bootstrap 4. This requires Bootstrap 4 and + * DataTables integration for Bootstrap 4. This requires Bootstrap 5 and * DataTables 1.10 or newer. * * This file sets the defaults and adds options to DataTables to style its @@ -55,9 +55,9 @@ $.extend( true, DataTable.defaults, { /* Default class modification */ $.extend( DataTable.ext.classes, { - sWrapper: "dataTables_wrapper dt-bootstrap4", + sWrapper: "dataTables_wrapper dt-bootstrap5", sFilterInput: "form-control form-control-sm", - sLengthSelect: "custom-select custom-select-sm form-control form-control-sm", + sLengthSelect: "form-select form-select-sm", sProcessing: "dataTables_processing card", sPageButton: "paginate_button page-item" } ); diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net/js/jquery.dataTables.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net/js/jquery.dataTables.js index aeb7fb9b4a..dad445e7be 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net/js/jquery.dataTables.js +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/datatables.net/js/jquery.dataTables.js @@ -1,15 +1,15 @@ -/*! DataTables 1.10.21 - * ©2008-2020 SpryMedia Ltd - datatables.net/license +/*! DataTables 1.11.3 + * ©2008-2021 SpryMedia Ltd - datatables.net/license */ /** * @summary DataTables * @description Paginate, search and order HTML tables - * @version 1.10.21 + * @version 1.11.3 * @file jquery.dataTables.js * @author SpryMedia Ltd * @contact www.datatables.net - * @copyright Copyright 2008-2020 SpryMedia Ltd. + * @copyright Copyright 2008-2021 SpryMedia Ltd. * * This source file is free software, available under the following license: * MIT license - http://datatables.net/license @@ -53,7 +53,7 @@ } else { // Browser - factory( jQuery, window, document ); + window.DataTable = factory( jQuery, window, document ); } } (function( $, window, document, undefined ) { @@ -91,8 +91,17 @@ * } ); * } ); */ - var DataTable = function ( options ) + var DataTable = function ( selector, options ) { + // When creating with `new`, create a new DataTable, returning the API instance + if (this instanceof DataTable) { + return $(selector).DataTable(options); + } + else { + // Argument switching + options = selector; + } + /** * Perform a jQuery selector action on the table's TR elements (from the tbody) and * return the resulting jQuery object. @@ -251,7 +260,7 @@ var api = this.api( true ); /* Check if we want to add multiple rows or not */ - var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? + var rows = Array.isArray(data) && ( Array.isArray(data[0]) || $.isPlainObject(data[0]) ) ? api.rows.add( data ) : api.row.add( data ); @@ -975,7 +984,7 @@ // If the length menu is given, but the init display length is not, use the length menu if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) { - oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ? + oInit.iDisplayLength = Array.isArray( oInit.aLengthMenu[0] ) ? oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; } @@ -1066,7 +1075,7 @@ if ( oInit.iDeferLoading !== null ) { oSettings.bDeferLoading = true; - var tmp = $.isArray( oInit.iDeferLoading ); + var tmp = Array.isArray( oInit.iDeferLoading ); oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; } @@ -1085,9 +1094,11 @@ dataType: 'json', url: oLanguage.sUrl, success: function ( json ) { - _fnLanguageCompat( json ); _fnCamelToHungarian( defaults.oLanguage, json ); + _fnLanguageCompat( json ); $.extend( true, oLanguage, json ); + + _fnCallbackFire( oSettings, null, 'i18n', [oSettings]); _fnInitialise( oSettings ); }, error: function () { @@ -1097,6 +1108,9 @@ } ); bInitHandedOff = true; } + else { + _fnCallbackFire( oSettings, null, 'i18n', [oSettings]); + } /* * Stripes @@ -1248,7 +1262,7 @@ var tbody = $this.children('tbody'); if ( tbody.length === 0 ) { - tbody = $('').appendTo($this); + tbody = $('').insertAfter(thead); } oSettings.nTBody = tbody[0]; @@ -1296,10 +1310,11 @@ }; /* Must be done after everything which can be overridden by the state saving! */ + _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); + if ( oInit.bStateSave ) { features.bStateSave = true; - _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); _fnLoadState( oSettings, oInit, loadedInit ); } else { @@ -1356,7 +1371,7 @@ // - Ƀ - Bitcoin // - Ξ - Ethereum // standards as thousands separators. - var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi; + var _re_formatted_numeric = /['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi; var _empty = function ( d ) { @@ -1584,6 +1599,52 @@ return out; }; + // Surprisingly this is faster than [].concat.apply + // https://jsperf.com/flatten-an-array-loop-vs-reduce/2 + var _flatten = function (out, val) { + if (Array.isArray(val)) { + for (var i=0 ; i