diff --git a/npm/ng-packs/apps/dev-app/src/app/app.module.ts b/npm/ng-packs/apps/dev-app/src/app/app.module.ts index 9c89658357..cff75b7bfa 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app.module.ts @@ -13,6 +13,7 @@ import { environment } from '../environments/environment'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { APP_ROUTE_PROVIDER } from './route.provider'; +import { FeatureManagementModule } from '@abp/ng.feature-management'; @NgModule({ imports: [ @@ -29,6 +30,7 @@ import { APP_ROUTE_PROVIDER } from './route.provider'; AccountConfigModule.forRoot(), IdentityConfigModule.forRoot(), TenantManagementConfigModule.forRoot(), + FeatureManagementModule.forRoot(), SettingManagementConfigModule.forRoot(), ThemeBasicModule.forRoot(), ], diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.html b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.html new file mode 100644 index 0000000000..5ede3dba07 --- /dev/null +++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.html @@ -0,0 +1,19 @@ + + + diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.ts b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.ts new file mode 100644 index 0000000000..3ac018478e --- /dev/null +++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.ts @@ -0,0 +1,20 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'abp-feature-management-tab', + templateUrl: './feature-management-tab.component.html', +}) +export class FeatureManagementTabComponent { + visibleFeatures = false; + providerKey: string; + + openFeaturesModal() { + setTimeout(() => { + this.visibleFeatures = true; + }, 0); + } + + onVisibleFeaturesChange = (value: boolean) => { + this.visibleFeatures = value; + }; +} diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/index.ts b/npm/ng-packs/packages/feature-management/src/lib/components/index.ts index 64f8bd0fc5..50146e4f1a 100644 --- a/npm/ng-packs/packages/feature-management/src/lib/components/index.ts +++ b/npm/ng-packs/packages/feature-management/src/lib/components/index.ts @@ -1 +1,2 @@ export * from './feature-management/feature-management.component'; +export * from './feature-management-tab/feature-management-tab.component'; diff --git a/npm/ng-packs/packages/feature-management/src/lib/enums/feature-management-tab-names.ts b/npm/ng-packs/packages/feature-management/src/lib/enums/feature-management-tab-names.ts new file mode 100644 index 0000000000..46b04812a4 --- /dev/null +++ b/npm/ng-packs/packages/feature-management/src/lib/enums/feature-management-tab-names.ts @@ -0,0 +1,3 @@ +export const enum eFeatureManagementTabNames { + FeatureManagement = 'AbpFeatureManagement::Features', +} diff --git a/npm/ng-packs/packages/feature-management/src/lib/enums/index.ts b/npm/ng-packs/packages/feature-management/src/lib/enums/index.ts new file mode 100644 index 0000000000..76e73d8e03 --- /dev/null +++ b/npm/ng-packs/packages/feature-management/src/lib/enums/index.ts @@ -0,0 +1,2 @@ +export * from './feature-management-tab-names'; +export * from './components'; diff --git a/npm/ng-packs/packages/feature-management/src/lib/feature-management.module.ts b/npm/ng-packs/packages/feature-management/src/lib/feature-management.module.ts index 45fef5a64b..2de14108f1 100644 --- a/npm/ng-packs/packages/feature-management/src/lib/feature-management.module.ts +++ b/npm/ng-packs/packages/feature-management/src/lib/feature-management.module.ts @@ -1,15 +1,28 @@ import { CoreModule } from '@abp/ng.core'; import { ThemeSharedModule } from '@abp/ng.theme.shared'; -import { NgModule } from '@angular/core'; +import { ModuleWithProviders, NgModule } from '@angular/core'; import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; import { FeatureManagementComponent } from './components/feature-management/feature-management.component'; import { FreeTextInputDirective } from './directives/free-text-input.directive'; +import { FEATURE_MANAGEMENT_SETTINGS_PROVIDERS } from './providers'; +import { FeatureManagementTabComponent } from './components'; -const exported = [FeatureManagementComponent, FreeTextInputDirective]; +const exported = [ + FeatureManagementComponent, + FreeTextInputDirective, + FeatureManagementTabComponent, +]; @NgModule({ declarations: [...exported], imports: [CoreModule, ThemeSharedModule, NgbNavModule], exports: [...exported], }) -export class FeatureManagementModule {} +export class FeatureManagementModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: FeatureManagementModule, + providers: [FEATURE_MANAGEMENT_SETTINGS_PROVIDERS], + }; + } +} diff --git a/npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts b/npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts new file mode 100644 index 0000000000..2d7664bb46 --- /dev/null +++ b/npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts @@ -0,0 +1,26 @@ +import { SettingTabsService } from '@abp/ng.setting-management/config'; +import { APP_INITIALIZER } from '@angular/core'; +import { eFeatureManagementTabNames } from '../enums/feature-management-tab-names'; +import { FeatureManagementTabComponent } from '../components'; + +export const FEATURE_MANAGEMENT_SETTINGS_PROVIDERS = [ + { + provide: APP_INITIALIZER, + useFactory: configureSettingTabs, + deps: [SettingTabsService], + multi: true, + }, +]; + +export function configureSettingTabs(settingtabs: SettingTabsService) { + return () => { + settingtabs.add([ + { + name: eFeatureManagementTabNames.FeatureManagement, + order: 104, + requiredPolicy: 'FeatureManagement.ManageHostFeatures', + component: FeatureManagementTabComponent, + }, + ]); + }; +} diff --git a/npm/ng-packs/packages/feature-management/src/lib/providers/index.ts b/npm/ng-packs/packages/feature-management/src/lib/providers/index.ts new file mode 100644 index 0000000000..34f4a30f78 --- /dev/null +++ b/npm/ng-packs/packages/feature-management/src/lib/providers/index.ts @@ -0,0 +1 @@ +export * from './feature-management-settings.provider'; diff --git a/npm/ng-packs/packages/feature-management/src/public-api.ts b/npm/ng-packs/packages/feature-management/src/public-api.ts index b9073df803..ee7c276e92 100644 --- a/npm/ng-packs/packages/feature-management/src/public-api.ts +++ b/npm/ng-packs/packages/feature-management/src/public-api.ts @@ -1,5 +1,6 @@ export * from './lib/components'; export * from './lib/directives'; +export * from './lib/providers'; export * from './lib/enums/components'; export * from './lib/feature-management.module'; -export * from './lib/models'; \ No newline at end of file +export * from './lib/models';