Browse Source

improve the text template of user menu

pull/11214/head
mehmet-erim 5 years ago
parent
commit
25e23461e1
  1. 9
      npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.html
  2. 61
      npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts
  3. 7
      npm/ng-packs/packages/theme-shared/src/lib/models/user-menu.ts

9
npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.html

@ -48,8 +48,13 @@
</ng-template> </ng-template>
<ng-template #textTemplate> <ng-template #textTemplate>
<a (click)="item.action ? item.action() : null" class="dropdown-item pointer"> <a
{{ item.text }}</a *ngIf="item.textTemplate"
(click)="item.action ? item.action() : null"
class="dropdown-item pointer"
>
<i *ngIf="item.textTemplate.icon" class="me-1 {{ item.textTemplate.icon }}"></i>
{{ item.textTemplate.text | abpLocalization }}</a
> >
</ng-template> </ng-template>
</li> </li>

61
npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts

@ -1,12 +1,6 @@
import { import { AuthService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';
AuthService,
ConfigStateService,
LocalizationService,
NAVIGATE_TO_MANAGE_PROFILE,
} from '@abp/ng.core';
import { UserMenuService } from '@abp/ng.theme.shared'; import { UserMenuService } from '@abp/ng.theme.shared';
import { APP_INITIALIZER, Injector } from '@angular/core'; import { APP_INITIALIZER, Injector } from '@angular/core';
import { filter } from 'rxjs/operators';
import { eUserMenuItems } from '../enums/user-menu-items'; import { eUserMenuItems } from '../enums/user-menu-items';
export const BASIC_THEME_USER_MENU_PROVIDERS = [ export const BASIC_THEME_USER_MENU_PROVIDERS = [
@ -19,41 +13,32 @@ export const BASIC_THEME_USER_MENU_PROVIDERS = [
]; ];
export function configureUserMenu(injector: Injector) { export function configureUserMenu(injector: Injector) {
const configState = injector.get(ConfigStateService);
const userMenu = injector.get(UserMenuService); const userMenu = injector.get(UserMenuService);
const localization = injector.get(LocalizationService);
const authService = injector.get(AuthService); const authService = injector.get(AuthService);
const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE); const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);
return () => { return () => {
configState userMenu.addItems([
.getAll$() {
.pipe(filter(res => !!res?.localization)) id: eUserMenuItems.MyAccount,
.subscribe(() => { order: 100,
userMenu.addItems([ textTemplate: {
{ text: 'AbpAccount::MyAccount',
id: eUserMenuItems.MyAccount, icon: 'fa fa-cog',
order: 100, },
html: ` action: () => navigateToManageProfile(),
<a class="dropdown-item pointer" },
><i class="fa fa-cog me-1"></i>${localization.instant('AbpAccount::MyAccount')}</a {
> id: eUserMenuItems.Logout,
`, order: 101,
action: () => navigateToManageProfile(), textTemplate: {
}, text: 'AbpUi::Logout',
{ icon: 'fa fa-power-off',
id: eUserMenuItems.Logout, },
order: 101, action: () => {
html: ` authService.logout().subscribe();
<a class="dropdown-item" href="javascript:void(0)" },
><i class="fa fa-power-off me-1"></i>${localization.instant('AbpUi::Logout')}</a },
> ]);
`,
action: () => {
authService.logout().subscribe();
},
},
]);
});
}; };
} }

7
npm/ng-packs/packages/theme-shared/src/lib/models/user-menu.ts

@ -1,5 +1,10 @@
import { NavItem } from './nav-item'; import { NavItem } from './nav-item';
export class UserMenu extends NavItem { export class UserMenu extends NavItem {
text?: string; textTemplate?: UserMenuTextTemplate;
}
export interface UserMenuTextTemplate {
text: string;
icon?: string;
} }

Loading…
Cancel
Save