Browse Source

feat: use SettingTabsService in setting management

pull/4377/head
Arman Ozak 6 years ago
parent
commit
0fb0ebad5d
  1. 4
      npm/ng-packs/packages/setting-management/src/lib/actions/setting-management.actions.ts
  2. 45
      npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts
  3. 4
      npm/ng-packs/packages/setting-management/src/lib/models/setting-management.ts
  4. 4
      npm/ng-packs/packages/setting-management/src/lib/states/setting-management.state.ts

4
npm/ng-packs/packages/setting-management/src/lib/actions/setting-management.actions.ts

@ -1,6 +1,6 @@
import { SettingTab } from '@abp/ng.theme.shared'; import { ABP } from '@abp/ng.core';
export class SetSelectedSettingTab { export class SetSelectedSettingTab {
static readonly type = '[SettingManagement] Set Selected Tab'; static readonly type = '[SettingManagement] Set Selected Tab';
constructor(public payload: SettingTab) {} constructor(public payload: ABP.Tab) {}
} }

45
npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts

@ -1,7 +1,7 @@
import { ConfigState } from '@abp/ng.core'; import { ABP, SettingTabsService } from '@abp/ng.core';
import { getSettingTabs, SettingTab } from '@abp/ng.theme.shared'; import { Component, OnDestroy, OnInit, TrackByFunction } from '@angular/core';
import { Component, OnInit, TrackByFunction } from '@angular/core';
import { Store } from '@ngxs/store'; import { Store } from '@ngxs/store';
import { Subscription } from 'rxjs';
import { SetSelectedSettingTab } from '../actions/setting-management.actions'; import { SetSelectedSettingTab } from '../actions/setting-management.actions';
import { SettingManagementState } from '../states/setting-management.state'; import { SettingManagementState } from '../states/setting-management.state';
@ -9,35 +9,34 @@ import { SettingManagementState } from '../states/setting-management.state';
selector: 'abp-setting-management', selector: 'abp-setting-management',
templateUrl: './setting-management.component.html', templateUrl: './setting-management.component.html',
}) })
export class SettingManagementComponent implements OnInit { export class SettingManagementComponent implements OnDestroy, OnInit {
settings: SettingTab[] = []; private subscription = new Subscription();
settings: ABP.Tab[] = [];
set selected(value: SettingTab) { set selected(value: ABP.Tab) {
this.store.dispatch(new SetSelectedSettingTab(value)); this.store.dispatch(new SetSelectedSettingTab(value));
} }
get selected(): SettingTab { get selected(): ABP.Tab {
const value = this.store.selectSnapshot(SettingManagementState.getSelectedTab); const value = this.store.selectSnapshot(SettingManagementState.getSelectedTab);
if ((!value || !value.component) && this.settings.length) { return value?.component ? value : this.settings[0] || ({} as ABP.Tab);
return this.settings[0];
}
return value;
} }
trackByFn: TrackByFunction<SettingTab> = (_, item) => item.name; trackByFn: TrackByFunction<ABP.Tab> = (_, item) => item.name;
constructor(private store: Store, private settingTabs: SettingTabsService) {}
constructor(private store: Store) {} ngOnDestroy() {
this.subscription.unsubscribe();
}
ngOnInit() { ngOnInit() {
this.settings = getSettingTabs() this.subscription.add(
.filter(setting => this.settingTabs.visible$.subscribe(settings => {
this.store.selectSnapshot(ConfigState.getGrantedPolicy(setting.requiredPolicy)), this.settings = settings;
)
.sort((a, b) => a.order - b.order); if (!this.selected) this.selected = this.settings[0];
}),
if (!this.selected && this.settings.length) { );
this.selected = this.settings[0];
}
} }
} }

4
npm/ng-packs/packages/setting-management/src/lib/models/setting-management.ts

@ -1,7 +1,7 @@
import { SettingTab } from '@abp/ng.theme.shared'; import { ABP } from '@abp/ng.core';
export namespace SettingManagement { export namespace SettingManagement {
export interface State { export interface State {
selectedTab: SettingTab; selectedTab?: ABP.Tab;
} }
} }

4
npm/ng-packs/packages/setting-management/src/lib/states/setting-management.state.ts

@ -1,11 +1,11 @@
import { Injectable } from '@angular/core';
import { Action, Selector, State, StateContext } from '@ngxs/store'; import { Action, Selector, State, StateContext } from '@ngxs/store';
import { SetSelectedSettingTab } from '../actions/setting-management.actions'; import { SetSelectedSettingTab } from '../actions/setting-management.actions';
import { SettingManagement } from '../models/setting-management'; import { SettingManagement } from '../models/setting-management';
import { Injectable } from '@angular/core';
@State<SettingManagement.State>({ @State<SettingManagement.State>({
name: 'SettingManagementState', name: 'SettingManagementState',
defaults: { selectedTab: {} } as SettingManagement.State, defaults: {},
}) })
@Injectable() @Injectable()
export class SettingManagementState { export class SettingManagementState {

Loading…
Cancel
Save