Browse Source

feat: add user-menu.provider

pull/11214/head
mehmet-erim 4 years ago
parent
commit
3ec9a83acd
  1. 1
      npm/ng-packs/packages/theme-basic/src/lib/enums/index.ts
  2. 4
      npm/ng-packs/packages/theme-basic/src/lib/enums/user-menu-items.ts
  3. 1
      npm/ng-packs/packages/theme-basic/src/lib/providers/index.ts
  4. 59
      npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts
  5. 2
      npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts
  6. 3
      npm/ng-packs/packages/theme-shared/src/lib/models/index.ts
  7. 3
      npm/ng-packs/packages/theme-shared/src/lib/models/user-menu.ts

1
npm/ng-packs/packages/theme-basic/src/lib/enums/index.ts

@ -1 +1,2 @@
export * from './components';
export * from './user-menu-items';

4
npm/ng-packs/packages/theme-basic/src/lib/enums/user-menu-items.ts

@ -0,0 +1,4 @@
export const enum eUserMenuItems {
MyAccount = 'UserMenu.MyAccount',
Logout = 'UserMenu.Logout',
}

1
npm/ng-packs/packages/theme-basic/src/lib/providers/index.ts

@ -1,2 +1,3 @@
export * from './nav-item.provider';
export * from './styles.provider';
export * from './user-menu.provider';

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

@ -0,0 +1,59 @@
import {
AuthService,
ConfigStateService,
LocalizationService,
NAVIGATE_TO_MANAGE_PROFILE,
} from '@abp/ng.core';
import { UserMenuService } from '@abp/ng.theme.shared';
import { APP_INITIALIZER, Injector } from '@angular/core';
import { filter } from 'rxjs/operators';
import { eUserMenuItems } from '../enums/user-menu-items';
export const BASIC_THEME_USER_MENU_PROVIDERS = [
{
provide: APP_INITIALIZER,
useFactory: configureUserMenu,
deps: [Injector],
multi: true,
},
];
export function configureUserMenu(injector: Injector) {
const configState = injector.get(ConfigStateService);
const userMenu = injector.get(UserMenuService);
const localization = injector.get(LocalizationService);
const authService = injector.get(AuthService);
const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);
return () => {
configState
.getAll$()
.pipe(filter(res => !!res?.localization))
.subscribe(() => {
userMenu.addItems([
{
id: eUserMenuItems.MyAccount,
order: 100,
html: `
<a class="dropdown-item pointer"
><i class="fa fa-cog me-1"></i>${localization.instant('AbpAccount::MyAccount')}</a
>
`,
action: () => navigateToManageProfile(),
},
{
id: eUserMenuItems.Logout,
order: 101,
html: `
<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();
},
},
]);
});
};
}

2
npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts

@ -23,6 +23,7 @@ import { ValidationErrorComponent } from './components/validation-error/validati
import { LazyStyleHandler } from './handlers/lazy-style.handler';
import { BASIC_THEME_NAV_ITEM_PROVIDERS } from './providers/nav-item.provider';
import { BASIC_THEME_STYLES_PROVIDERS } from './providers/styles.provider';
import { BASIC_THEME_USER_MENU_PROVIDERS } from './providers/user-menu.provider';
export const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];
@ -70,6 +71,7 @@ export class ThemeBasicModule {
ngModule: ThemeBasicModule,
providers: [
BASIC_THEME_NAV_ITEM_PROVIDERS,
BASIC_THEME_USER_MENU_PROVIDERS,
BASIC_THEME_STYLES_PROVIDERS,
{
provide: VALIDATION_ERROR_TEMPLATE,

3
npm/ng-packs/packages/theme-shared/src/lib/models/index.ts

@ -1,5 +1,6 @@
export * from './common';
export * from './confirmation';
export * from './nav-item';
export * from './statistics';
export * from './toaster';
export * from './nav-item';
export * from './user-menu';

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

@ -0,0 +1,3 @@
import { NavItem } from './nav-item';
export class UserMenu extends NavItem {}
Loading…
Cancel
Save