From 85c5691c598f8e5dadc7edd0266e0ded53524b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20KILI=C3=87?= Date: Thu, 20 Oct 2022 16:31:02 +0300 Subject: [PATCH 1/3] Add footer document to leptonx-lite --- docs/en/Themes/LeptonXLite/Angular.md | 186 ++++++++++++++++---------- docs/en/images/angular-footer.png | Bin 0 -> 14659 bytes 2 files changed, 119 insertions(+), 67 deletions(-) create mode 100644 docs/en/images/angular-footer.png diff --git a/docs/en/Themes/LeptonXLite/Angular.md b/docs/en/Themes/LeptonXLite/Angular.md index 4079281f99..0da5a99058 100644 --- a/docs/en/Themes/LeptonXLite/Angular.md +++ b/docs/en/Themes/LeptonXLite/Angular.md @@ -1,7 +1,8 @@ # LeptonX Lite Angular UI + LeptonX Lite has implementation for the ABP Framework Angular Client. It's a simplified variation of the [LeptonX Theme](https://x.leptontheme.com/). -> If you are looking for a professional, enterprise ready theme, you can check the [LeptonX Theme](https://x.leptontheme.com/), which is a part of [ABP Commercial](https://commercial.abp.io/). +> If you are looking for a professional, enterprise ready theme, you can check the [LeptonX Theme](https://x.leptontheme.com/), which is a part of [ABP Commercial](https://commercial.abp.io/). > See the [Theming document](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Theming) to learn about themes. @@ -11,28 +12,27 @@ This theme is **already installed** when you create a new solution using the sta To add `LeptonX-lite` into your project, -* Install `@abp/ng.theme.lepton-x` +- Install `@abp/ng.theme.lepton-x` `yarn add @abp/ng.theme.lepton-x@preview` -* Install `bootstrap-icons` +- Install `bootstrap-icons` `yarn add bootstrap-icons` +- Then, we need to edit the styles array in `angular.json` to replace the existing style with the new one. -* Then, we need to edit the styles array in `angular.json` to replace the existing style with the new one. - -Add the following style +Add the following style ```json "node_modules/bootstrap-icons/font/bootstrap-icons.css", ``` -* Finally, remove `ThemeBasicModule` from `app.module.ts`, and import the related modules in `app.module.ts` +- Finally, remove `ThemeBasicModule` from `app.module.ts`, and import the related modules in `app.module.ts` ```js -import { ThemeLeptonXModule } from '@abp/ng.theme.lepton-x'; -import { SideMenuLayoutModule } from '@abp/ng.theme.lepton-x/layouts'; +import { ThemeLeptonXModule } from "@abp/ng.theme.lepton-x"; +import { SideMenuLayoutModule } from "@abp/ng.theme.lepton-x/layouts"; @NgModule({ imports: [ @@ -51,7 +51,7 @@ export class AppModule {} Note: If you employ [Resource Owner Password Flow](https://docs.abp.io/en/abp/latest/UI/Angular/Authorization#resource-owner-password-flow) for authorization, you should import the following module as well: ```js -import { AccountLayoutModule } from '@abp/ng.theme.lepton-x/account'; +import { AccountLayoutModule } from "@abp/ng.theme.lepton-x/account"; @NgModule({ // ... @@ -69,15 +69,15 @@ To change the logos and brand color of `LeptonX`, simply add the following CSS t ```css :root { - --lpx-logo: url('/assets/images/logo.png'); - --lpx-logo-icon: url('/assets/images/logo-icon.png'); + --lpx-logo: url("/assets/images/logo.png"); + --lpx-logo-icon: url("/assets/images/logo-icon.png"); --lpx-brand: #edae53; } ``` - `--lpx-logo` is used to place the logo in the menu. -- `--lpx-logo-icon` is a square icon used when the menu is collapsed. -- `--lpx-brand` is a color used throughout the application, especially on active elements. +- `--lpx-logo-icon` is a square icon used when the menu is collapsed. +- `--lpx-brand` is a color used throughout the application, especially on active elements. ### Server Side @@ -85,22 +85,18 @@ In order to migrate to LeptonX on your server side projects (Host and/or AuthSer ## Customization - ### Layouts -The Angular version of LeptonX Lite provides **layout components** for your **user interface** on [ABP Framework Theming](https://docs.abp.io/en/abp/latest/UI/Angular/Theming). You can use layouts to **organize your user interface**. You can replace the **layout components** and some parts of the **layout components** with the [ABP replaceable component system](https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement). - +The Angular version of LeptonX Lite provides **layout components** for your **user interface** on [ABP Framework Theming](https://docs.abp.io/en/abp/latest/UI/Angular/Theming). You can use layouts to **organize your user interface**. You can replace the **layout components** and some parts of the **layout components** with the [ABP replaceable component system](https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement). The main responsibility of a theme is to **provide** the layouts. There are **three pre-defined layouts that must be implemented by all the themes:** -* **ApplicationLayoutComponent:** The **default** layout which is used by the **main** application pages. - -* **AccountLayoutComponent:** Mostly used by the **account module** for **login**, **register**, **forgot password**... pages. - -* **EmptyLayoutComponent:** The **Minimal** layout that **has no layout components** at all. +- **ApplicationLayoutComponent:** The **default** layout which is used by the **main** application pages. +- **AccountLayoutComponent:** Mostly used by the **account module** for **login**, **register**, **forgot password**... pages. +- **EmptyLayoutComponent:** The **Minimal** layout that **has no layout components** at all. + +The **Layout components** and all the replacable components are predefined in `eThemeLeptonXComponents` as enum. - The **Layout components** and all the replacable components are predefined in `eThemeLeptonXComponents` as enum. - ### How to replace a component ```js @@ -122,8 +118,8 @@ export class AppComponent { } } ``` -See the [Component Replacement](https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement) documentation for more information on how to replace components. +See the [Component Replacement](https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement) documentation for more information on how to replace components. ### Brand Component @@ -131,16 +127,14 @@ The **brand component** is a simple component that can be used to display your b ```js ///... - this.replaceableComponents.add({ - component: YourNewLogoComponent, - key: eThemeLeptonXComponents.Logo, - }); +this.replaceableComponents.add({ + component: YourNewLogoComponent, + key: eThemeLeptonXComponents.Logo, +}); ///... ``` -![Brand component](../../images/leptonxlite-brand-component.png) - - +![Brand component](../../images/leptonxlite-brand-component.png) ## Breadcrumb Component @@ -148,14 +142,14 @@ On websites that have a lot of pages, **breadcrumb navigation** can greatly **en ```js ///... - this.replaceableComponents.add({ - component: YourNewSidebarComponent, - key: eThemeLeptonXComponents.Breadcrumb, - }); +this.replaceableComponents.add({ + component: YourNewSidebarComponent, + key: eThemeLeptonXComponents.Breadcrumb, +}); ///... ``` -![Breadcrumb component](../../images/leptonxlite-breadcrumb-component.png) +![Breadcrumb component](../../images/leptonxlite-breadcrumb-component.png) ## Sidebar Menu Component @@ -163,54 +157,61 @@ Sidebar menus have been used as a **directory for Related Pages** to a **Service ```js ///... - this.replaceableComponents.add({ - component: YourNewSidebarComponent, - key: eThemeLeptonXComponents.Sidebar, - }); +this.replaceableComponents.add({ + component: YourNewSidebarComponent, + key: eThemeLeptonXComponents.Sidebar, +}); ///... ``` -![Sidebar menu component](../../images/leptonxlite-sidebar-menu-component.png) + +![Sidebar menu component](../../images/leptonxlite-sidebar-menu-component.png) ## Page Alerts Component Provides contextual **feedback messages** for typical user actions with a handful of **available** and **flexible** **alert messages**. Alerts are available for any length of text, as well as an **optional dismiss button**. -![Page alerts component](../../images/leptonxlite-page-alerts-component.png) +![Page alerts component](../../images/leptonxlite-page-alerts-component.png) + ```js ///... - this.replaceableComponents.add({ - component: YourNewPageAlertContainerComponent, - key: eThemeLeptonXComponents.PageAlertContainer, - }); +this.replaceableComponents.add({ + component: YourNewPageAlertContainerComponent, + key: eThemeLeptonXComponents.PageAlertContainer, +}); ///... ``` + ## Toolbar Component + ![Breadcrumb component](../../images/leptonxlite-toolbar-component.png) Toolbar items are used to add **extra functionality to the toolbar**. The toolbar is a **horizontal bar** that **contains** a group of **toolbar items**. + ```js ///... - this.replaceableComponents.add({ - component: YourNewNavItemsComponent, - key: eThemeLeptonXComponents.NavItems, - }); +this.replaceableComponents.add({ + component: YourNewNavItemsComponent, + key: eThemeLeptonXComponents.NavItems, +}); ///... ``` ## Toolbar Items + There are two parts to the toolbar. The first is Language-Switch. The second is the User-Profile element. You can swap out each of these parts individually. ## Language Switch Component -Think about a **multi-lingual** website and the first thing that could **hit your mind** is **the language switch component**. A **navigation bar** is a **great place** to **embed a language switch**. By embedding the language switch in the navigation bar of your website, you would **make it simpler** for users to **find it** and **easily** switch the **language** **without trying to locate it across the website.** +Think about a **multi-lingual** website and the first thing that could **hit your mind** is **the language switch component**. A **navigation bar** is a **great place** to **embed a language switch**. By embedding the language switch in the navigation bar of your website, you would **make it simpler** for users to **find it** and **easily** switch the **language** **without trying to locate it across the website.** + +![Language switch component](../../images/leptonxlite-language-switch-component.png) -![Language switch component](../../images/leptonxlite-language-switch-component.png) ```js ///... - this.replaceableComponents.add({ - component: YourNewLanguagesComponent, - key: eThemeLeptonXComponents.Languages, - }); +this.replaceableComponents.add({ + component: YourNewLanguagesComponent, + key: eThemeLeptonXComponents.Languages, +}); ///... ``` @@ -219,33 +220,84 @@ Think about a **multi-lingual** website and the first thing that could **hit you The **User Menu** is the **menu** that **drops down** when you **click your name** or **profile picture** in the **upper right corner** of your page (**in the toolbar**). It drops down options such as **Settings**, **Logout**, etc. ![User menu component](../../images/leptonxlite-user-menu-component.png) + ```js ///... - this.replaceableComponents.add({ - component: YourNewCurrentUserComponent, - key: eThemeLeptonXComponents.CurrentUser, - }); +this.replaceableComponents.add({ + component: YourNewCurrentUserComponent, + key: eThemeLeptonXComponents.CurrentUser, +}); ///... ``` + Note: The language selection component in the Volo app is not replaceable. It is part of the settings menu. ## Mobile Navbar Component + The **mobile navbar component** is used to display the **navbar menu on mobile devices**. The mobile navbar component is a **dropdown menu** that contains language selection and user menu. -![Mobile user menu component](../../images/leptonxlite-mobile-user-menu-component.png) +![Mobile user menu component](../../images/leptonxlite-mobile-user-menu-component.png) + ```js ///... - this.replaceableComponents.add({ - component: YourNewMobileNavbarComponent, - key: eThemeLeptonXComponents.MobileNavbar, - }); +this.replaceableComponents.add({ + component: YourNewMobileNavbarComponent, + key: eThemeLeptonXComponents.MobileNavbar, +}); ///... ``` + ## Mobile Navbar Items. -There are two parts of the mobile navbar. The mobile navbar has Language-Switch and User-Profile. You can swap out each of these parts individually. + +There are two parts of the mobile navbar. The mobile navbar has Language-Switch and User-Profile. You can swap out each of these parts individually. The Mobile language-Selection component key is `eThemeLeptonXComponents.MobileLanguageSelection`. The Mobile User-Profile component key is `eThemeLeptonXComponents.MobileUserProfile`. +## Footer Component + +![Angular Footer Component](../../images/angular-footer.png) + +Footer is the section of content at the very bottom of the site. This section of the content can be modified. +Inject **FooterLinksService** and use **setFooterInfo** method of **FooterLinksService** +to assign path or link and description. +**descUrl** and **footerLinks** are nullable. Constant **footerLinks** is rigth side of footer. + + +```js +///... + +const footerLinks = [ + { + link: "/components/bootstrap/badge", + text: "Manage Your Profile", + }, + { + link: "/components/bootstrap/border", + text: "My Security Logs", + }, +]; + +const footerInfo: FooterNav = { + desc: "Home", + descUrl: "/components/home", + footerLinks: footerLinks, +}; + +this.footerLinksService.setFooterInfo(footerInfo); + +///... +``` +If you want to change logo component, the key is `eThemeLeptonXComponents.Footer` + +```js +///... +this.replaceableComponents.add({ + component: YourNewFooterComponent, + key: eThemeLeptonXComponents.Footer, +}); +///... +``` + diff --git a/docs/en/images/angular-footer.png b/docs/en/images/angular-footer.png new file mode 100644 index 0000000000000000000000000000000000000000..16be8194ab313f5256e6e8cc7d7a2471635ec5db GIT binary patch literal 14659 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 literal 0 HcmV?d00001 From b0618c12aa7779d0b6c3d2db3d721b75a426c2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20KILI=C3=87?= Date: Fri, 21 Oct 2022 08:57:44 +0300 Subject: [PATCH 2/3] chabge footer document to leptonx-lite --- docs/en/Themes/LeptonXLite/Angular.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Themes/LeptonXLite/Angular.md b/docs/en/Themes/LeptonXLite/Angular.md index 0da5a99058..ca249bd34a 100644 --- a/docs/en/Themes/LeptonXLite/Angular.md +++ b/docs/en/Themes/LeptonXLite/Angular.md @@ -289,7 +289,7 @@ this.footerLinksService.setFooterInfo(footerInfo); ///... ``` -If you want to change logo component, the key is `eThemeLeptonXComponents.Footer` +If you want to change footer component, the key is `eThemeLeptonXComponents.Footer` ```js ///... From ae5d9b652ad9da2b8a2681ca1a083ebf56c3dc9b Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Mon, 24 Oct 2022 10:06:38 +0300 Subject: [PATCH 3/3] quick fix --- docs/en/Themes/LeptonXLite/Angular.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/en/Themes/LeptonXLite/Angular.md b/docs/en/Themes/LeptonXLite/Angular.md index ca249bd34a..950cd20c8b 100644 --- a/docs/en/Themes/LeptonXLite/Angular.md +++ b/docs/en/Themes/LeptonXLite/Angular.md @@ -87,7 +87,7 @@ In order to migrate to LeptonX on your server side projects (Host and/or AuthSer ### Layouts -The Angular version of LeptonX Lite provides **layout components** for your **user interface** on [ABP Framework Theming](https://docs.abp.io/en/abp/latest/UI/Angular/Theming). You can use layouts to **organize your user interface**. You can replace the **layout components** and some parts of the **layout components** with the [ABP replaceable component system](https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement). +The Angular version of LeptonX Lite provides **layout components** for your **user interface** on [ABP Framework Theming](https://docs.abp.io/en/abp/latest/UI/Angular/Theming). You can use the layouts to **organize your user interface**. You can replace the **layout components** and some parts of the **layout components** with the [ABP replaceable component system](https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement). The main responsibility of a theme is to **provide** the layouts. There are **three pre-defined layouts that must be implemented by all the themes:** @@ -259,10 +259,10 @@ The Mobile User-Profile component key is `eThemeLeptonXComponents.MobileUserProf ![Angular Footer Component](../../images/angular-footer.png) -Footer is the section of content at the very bottom of the site. This section of the content can be modified. -Inject **FooterLinksService** and use **setFooterInfo** method of **FooterLinksService** +The Footer is the section of content at the very bottom of the site. This section of the content can be modified. +Inject **FooterLinksService** and use the **setFooterInfo** method of **FooterLinksService** to assign path or link and description. -**descUrl** and **footerLinks** are nullable. Constant **footerLinks** is rigth side of footer. +**descUrl** and **footerLinks** are nullable. Constant **footerLinks** are on the right side of footer. ```js @@ -289,7 +289,7 @@ this.footerLinksService.setFooterInfo(footerInfo); ///... ``` -If you want to change footer component, the key is `eThemeLeptonXComponents.Footer` +If you want to change the footer component, the key is `eThemeLeptonXComponents.Footer` ```js ///...