From 25b95c5c4ef96f9f548f832ebfc07371c1de1f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 28 Oct 2020 14:42:38 +0300 Subject: [PATCH 1/3] Update Theming.md --- docs/en/UI/AspNetCore/Theming.md | 81 +++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/AspNetCore/Theming.md b/docs/en/UI/AspNetCore/Theming.md index 594a882821..fb9d7ccd0e 100644 --- a/docs/en/UI/AspNetCore/Theming.md +++ b/docs/en/UI/AspNetCore/Theming.md @@ -114,7 +114,7 @@ The [Lepton Theme](https://commercial.abp.io/themes) shows the application logo #### The Empty Layout -The empty layout provides an empty page, however it typically includes the following parts; +The empty layout provides an empty page. It typically includes the following parts; * [Page alerts](Page-Alerts.md) * The page content (aka `RenderBody()`) @@ -177,4 +177,81 @@ Configure(options => #### The IThemeSelector Service -ABP Framework allows to use multiple themes together. This is why `options.Themes` is a list. `IThemeSelector` service selects the theme on the runtime. The application developer can set the `AbpThemingOptions.DefaultThemeName` to set the theme to be used, or replace the `IThemeSelector` service implementation (the default implementation is `DefaultThemeSelector`) to completely control the theme selection on runtime. \ No newline at end of file +ABP Framework allows to use multiple themes together. This is why `options.Themes` is a list. `IThemeSelector` service selects the theme on the runtime. The application developer can set the `AbpThemingOptions.DefaultThemeName` to set the theme to be used, or replace the `IThemeSelector` service implementation (the default implementation is `DefaultThemeSelector`) to completely control the theme selection on runtime. + +### Bundles + +[Bundling system](Bundling-Minification.md) provides a standard way to import style & script files into pages. There are two standard bundles defined by the ABP Framework: + +* `StandardBundles.Styles.Global`: The global bundle that includes the style files used in all the pages. Typically, it includes the CSS files of the Base Libraries. +* `StandardBundles.Scripts.Global`: The global bundle that includes the script files used in all the pages. Typically, it includes the JavaScript files of the Base Libraries. + +A theme generally extends these standard bundles by adding theme specific CSS/JavaScript files. + +The best way to define new bundles, inherit from the standard bundles and add to the `AbpBundlingOptions` as shown below (this code is from the [Basic Theme](Basic-Theme.md)): + +````csharp +Configure(options => +{ + options + .StyleBundles + .Add(BasicThemeBundles.Styles.Global, bundle => + { + bundle + .AddBaseBundles(StandardBundles.Styles.Global) + .AddContributors(typeof(BasicThemeGlobalStyleContributor)); + }); + + options + .ScriptBundles + .Add(BasicThemeBundles.Scripts.Global, bundle => + { + bundle + .AddBaseBundles(StandardBundles.Scripts.Global) + .AddContributors(typeof(BasicThemeGlobalScriptContributor)); + }); +}); +```` + +`BasicThemeGlobalStyleContributor` and `BasicThemeGlobalScriptContributor` are bundle contributors. For example, `BasicThemeGlobalStyleContributor` is defined as shown below: + +```csharp +public class BasicThemeGlobalStyleContributor : BundleContributor +{ + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.Add("/themes/basic/layout.css"); + } +} +``` + +Then the theme can render these bundles in a layout. For example, you can render the Global Styles as shown below: + +````html + +```` + +See the [Bundle & Minification](Bundling-Minification.md) document to understand the Bundling system better. + +### Layout Parts + +#### Branding + +#### Main Menu + +#### Main Toolbar + +##### Language Selection + +##### User Menu + +#### Page Alerts + +#### Layout Hooks + +### The NPM Package + +A theme should have a NPM package that depends on the [@abp/aspnetcore.mvc.ui.theme.shared](https://www.npmjs.com/package/@abp/aspnetcore.mvc.ui.theme.shared) package. In this way, it inherits all the Base Libraries. If the theme requires additional libraries, then it should define these dependencies too. + +Applications use the [Client Side Package Management](Client-Side-Package-Management.md) system to add client side libraries to the project. So, if an application uses your theme, it should add dependency to your theme's NPM package as well as the NuGet package dependency. + From 79be09c125087be2ff63e50bef5c65a1e062e5d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 28 Oct 2020 15:39:51 +0300 Subject: [PATCH 2/3] Added sections to the themind document. --- docs/en/UI/AspNetCore/Theming.md | 141 ++++++++++++++++++ .../basic-theme-application-layout-parts.png | Bin 0 -> 77932 bytes 2 files changed, 141 insertions(+) create mode 100644 docs/en/images/basic-theme-application-layout-parts.png diff --git a/docs/en/UI/AspNetCore/Theming.md b/docs/en/UI/AspNetCore/Theming.md index fb9d7ccd0e..1811213d6f 100644 --- a/docs/en/UI/AspNetCore/Theming.md +++ b/docs/en/UI/AspNetCore/Theming.md @@ -235,20 +235,161 @@ See the [Bundle & Minification](Bundling-Minification.md) document to understand ### Layout Parts +A typical Layout consists of several parts. The theme should include the necessary parts in each layout. + +**Example: The Basic Theme has the following parts for the Application Layout** + +![basic-theme-application-layout-parts](../../images/basic-theme-application-layout-parts.png) + +The application code and the modules can only show contents in the Page Content part. If they need to change the other parts (to add a menu item, to add a toolbar item, to change the application name in the branding area...) they should use the ABP Framework APIs. + +The following sections explain the fundamental parts pre-defined by the ABP Framework and can be implemented by the themes. + +> It is a good practice to split the layout into components/partials, so the final application can override them partially for customization purpose. + #### Branding +`IBrandingProvider` service should be used to get the name and the logo URL of the application to render in the Branding part. + +The [Application Startup Template](../../Startup-Templates/Application.md) has an implementation of this interface to set the values by the application developer. + #### Main Menu +`IMenuManager` service is used to get the main menu items and render on the layout. + +**Example: Get the Main Menu to render in a view component** + +```csharp +public class MainNavbarMenuViewComponent : AbpViewComponent +{ + private readonly IMenuManager _menuManager; + + public MainNavbarMenuViewComponent(IMenuManager menuManager) + { + _menuManager = menuManager; + } + + public async Task InvokeAsync() + { + var menu = await _menuManager.GetAsync(StandardMenus.Main); + return View("~/Themes/Basic/Components/Menu/Default.cshtml", menu); + } +} +``` + +See the [Navigation / Menus](Navigation-Menu.md) document to learn more about the navigation system. + #### Main Toolbar +`IToolbarManager` service is used to get the Main Toolbar items and render on the layout. Each item of this toolbar is a View Component, so it may include any type of UI elements. Inject the `IToolbarManager` and use the `GetAsync` to get the toolbar items: + +````csharp +var toolbar = await _toolbarManager.GetAsync(StandardToolbars.Main); +```` + +> See the [Toolbars](Toolbars.md) document to learn more on the toolbar system. + +The theme has a responsibility to add two pre-defined items to the main toolbar: Language Selection and User Menu. To do that, create a class implementing the `IToolbarContributor` interface and add it to the `AbpToolbarOptions` as shown below: + +```csharp +Configure(options => +{ + options.Contributors.Add(new BasicThemeMainTopToolbarContributor()); +}); +``` + ##### Language Selection +Language Selection toolbar item is generally a dropdown that is used to switch between languages. `ILanguageProvider` is used to get the list of available languages and `CultureInfo.CurrentUICulture` is used to learn the current language. + +`/Abp/Languages/Switch` endpoint can be used to switch the language using such a link: + +````html +@language.DisplayName +```` + +This endpoint accepts the following query string parameters: + +* `culture`: The selected culture, like `en-US` or `en`. +* `uiCulture`: The selected UI culture, like `en-US` or `en`. +* `returnUrl` (optional): Can be used to return a given URL after switching the language. + +`culture` and `uiCulture` should match one of the available languages. ABP Framework sets a culture cookie in the `/Abp/Languages/Switch` endpoint. + ##### User Menu +User menu includes links related to the user account. `IMenuManager` is used just like the Main Menu, but this time with `StandardMenus.User` parameter like shown below: + +````csharp +var menu = await _menuManager.GetAsync(StandardMenus.User); +```` + +[ICurrentUser](../../CurrentUser.md) and [ICurrentTenant](../../Multi-Tenancy.md) services can be used to obtain the current user and tenant names. + #### Page Alerts +`IAlertManager` service is used to get the current page alerts to render on the layout. Use the `Alerts` list of the `IAlertManager`. It is generally rendered just before the page content (`RenderBody()`). + +See the [Page Alerts](Page-Alerts.md) document to learn more. + #### Layout Hooks +Since the Layout is in the theme package, the final application or any module can't directly manipulate the layout content. The [Layout Hook](Layout-Hooks.md) system allows to inject components to some specific points of the layout. + +The theme is responsible to render the hooks in the correct place. + +**Example: Render the `LayoutHooks.Head.First` Hook in the Application Layout** + +````html + + @await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Application) + ... +```` + +See the [Layout Hook](Layout-Hooks.md) document to learn the standard layout hooks. + +#### Script / Style Sections + +Every layout should render the following optional sections: + +* `styles` section is rendered in the end of the `head`, just before the `LayoutHooks.Head.Last`. +* `scripts` section is rendered in the end of the `body`, just before the `LayoutHooks.Body.Last`. + +In this way, the page can import styles and scripts to the layout. + +**Example: Render the `styles` section** + +````csharp +@await RenderSectionAsync("styles", required: false) +```` + +#### Widget Scripts + +The [Widget System](Widgets.md) allows to define reusable widgets with their own style/script files. All the layouts should render the widget style and scripts. + +**Widget Styles** is rendered as shown below, just before the `styles` section, after the global style bundle: + +````csharp +@await Component.InvokeAsync(typeof(WidgetStylesViewComponent)) +```` + +**Widget Scripts** is rendered as shown below, just before the `scripts` section, after the global script bundle: + +````csharp +@await Component.InvokeAsync(typeof(WidgetScriptsViewComponent)) +```` + +#### ABP Scripts + +ABP has some special scripts those should be included into every layout. They are not included in the global bundles since they are dynamically created based on the current user. + +ABP scripts (`ApplicationConfigurationScript` and `ServiceProxyScript`) should be added just after the global script bundle, as shown below: + +````html + + +```` + ### The NPM Package A theme should have a NPM package that depends on the [@abp/aspnetcore.mvc.ui.theme.shared](https://www.npmjs.com/package/@abp/aspnetcore.mvc.ui.theme.shared) package. In this way, it inherits all the Base Libraries. If the theme requires additional libraries, then it should define these dependencies too. diff --git a/docs/en/images/basic-theme-application-layout-parts.png b/docs/en/images/basic-theme-application-layout-parts.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8f9147a9b6aed79252130716925c77c7b36014 GIT binary patch literal 77932 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%0A*6^qQsGkep6SPlzCscbz;oX0!N!e9W9 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

y&FziT5V}tS4Iv;g6{|r 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 Date: Wed, 28 Oct 2020 15:58:32 +0300 Subject: [PATCH 3/3] Complete the theming document. --- docs/en/UI/AspNetCore/Theming.md | 42 +++++++++++++++++++++++++ docs/en/images/breadcrumbs-example.png | Bin 0 -> 9794 bytes 2 files changed, 42 insertions(+) create mode 100644 docs/en/images/breadcrumbs-example.png diff --git a/docs/en/UI/AspNetCore/Theming.md b/docs/en/UI/AspNetCore/Theming.md index 1811213d6f..9f3534b565 100644 --- a/docs/en/UI/AspNetCore/Theming.md +++ b/docs/en/UI/AspNetCore/Theming.md @@ -363,6 +363,20 @@ In this way, the page can import styles and scripts to the layout. @await RenderSectionAsync("styles", required: false) ```` +#### Content Toolbar Section + +Another pre-defined section is the Content Toolbar section which can be used by the pages to add code just before the page content. The Basic Theme renders it as shown below: + +````html +

+
+ @RenderSection("content_toolbar", false) +
+
+```` + +The container div's id must be `AbpContentToolbar`. This section should come before the `RenderBody()`. + #### Widget Scripts The [Widget System](Widgets.md) allows to define reusable widgets with their own style/script files. All the layouts should render the widget style and scripts. @@ -390,6 +404,34 @@ ABP scripts (`ApplicationConfigurationScript` and `ServiceProxyScript`) should b ```` +#### Page Title, Selected Menu Item and Breadcrumbs + +`IPageLayout` service can be injected by any page to set the Page Title, the selected menu item name and the breadcrumb items. Then the theme can use this service to get these values and render on the UI. + +The Basic Theme doesn't implement this service, but the Lepton Theme implements: + +![breadcrumbs-example](../../images/breadcrumbs-example.png) + +#### Tenant Switch + +The Account Layout should allow the user to switch the current tenant if the application is multi-tenant and the tenant was resolved from the cookies. See the [Basic Theme Account Layout](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml) as an example implementation. + +### Layout Classes + +The Standard Layouts (`Application`, `Account` and `Empty`) should add the following CSS classes to the `body` tag: + +* `abp-application-layout` for the `Application` layout. +* `abp-account-layout` for the `Account` layout. +* `abp-empty-layout` for the `Empty` layout. + +In this way, applications or modules can have selectors based on the current layout. + +### RTL + +To support Right-To-Left languages, the Layout should check the current culture and add `dir="rtl"` to the `html` tag and `rtl` CSS class the the `body` tag. + +You can check `CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft` to understand if the current language is a RTL language. + ### The NPM Package A theme should have a NPM package that depends on the [@abp/aspnetcore.mvc.ui.theme.shared](https://www.npmjs.com/package/@abp/aspnetcore.mvc.ui.theme.shared) package. In this way, it inherits all the Base Libraries. If the theme requires additional libraries, then it should define these dependencies too. diff --git a/docs/en/images/breadcrumbs-example.png b/docs/en/images/breadcrumbs-example.png new file mode 100644 index 0000000000000000000000000000000000000000..17ae5f8ba5741e78e98cbf6c4ab2ff1caba42614 GIT binary patch literal 9794 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 Tc#;+z3M06#s;yG2gvI?Ic4{8J literal 0 HcmV?d00001