From b2f2dec03eb1bb931f0aba61f65e03257c19ce52 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 28 Aug 2019 16:09:11 +0300 Subject: [PATCH] feature(theme-shared): add setting-management package --- npm/ng-packs/angular.json | 35 ++++ .../account/src/lib/constants/routes.ts | 21 ++- .../components/dynamic-layout.component.ts | 2 +- .../src/lib/plugins/config/config.plugin.ts | 6 +- .../core/src/lib/states/config.state.ts | 30 +++ .../core/src/lib/utils/common-utils.ts | 4 + .../packages/core/src/lib/utils/index.ts | 1 + .../identity/src/lib/constants/routes.ts | 43 +++-- .../packages/setting-management/README.md | 1 + .../packages/setting-management/karma.conf.js | 32 ++++ .../setting-management/ng-package.json | 8 + .../packages/setting-management/package.json | 10 + .../src/lib/components/index.ts | 1 + .../components/services/initial.service.ts | 17 ++ .../components/setting/setting.component.html | 176 ++++++++++++++++++ .../components/setting/setting.component.ts | 20 ++ .../src/lib/constants/index.ts | 1 + .../src/lib/constants/routes.ts | 15 ++ .../lib/setting-management-routing.module.ts | 18 ++ .../src/lib/setting-management.module.ts | 15 ++ .../setting-management/src/public-api.ts | 3 + .../packages/setting-management/src/test.ts | 21 +++ .../setting-management/tsconfig.lib.json | 26 +++ .../setting-management/tsconfig.spec.json | 17 ++ .../packages/setting-management/tslint.json | 17 ++ .../src/lib/constants/routes.ts | 37 ++-- .../src/lib/animations/fade.animations.ts | 7 + .../theme-shared/src/lib/animations/index.ts | 3 +- .../theme-shared/src/lib/models/index.ts | 1 + .../src/lib/models/setting-management.ts | 8 + .../src/lib/theme-shared.module.ts | 3 + 31 files changed, 548 insertions(+), 51 deletions(-) create mode 100644 npm/ng-packs/packages/core/src/lib/utils/common-utils.ts create mode 100644 npm/ng-packs/packages/setting-management/README.md create mode 100644 npm/ng-packs/packages/setting-management/karma.conf.js create mode 100644 npm/ng-packs/packages/setting-management/ng-package.json create mode 100644 npm/ng-packs/packages/setting-management/package.json create mode 100644 npm/ng-packs/packages/setting-management/src/lib/components/index.ts create mode 100644 npm/ng-packs/packages/setting-management/src/lib/components/services/initial.service.ts create mode 100644 npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.html create mode 100644 npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.ts create mode 100644 npm/ng-packs/packages/setting-management/src/lib/constants/index.ts create mode 100644 npm/ng-packs/packages/setting-management/src/lib/constants/routes.ts create mode 100644 npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts create mode 100644 npm/ng-packs/packages/setting-management/src/lib/setting-management.module.ts create mode 100644 npm/ng-packs/packages/setting-management/src/public-api.ts create mode 100644 npm/ng-packs/packages/setting-management/src/test.ts create mode 100644 npm/ng-packs/packages/setting-management/tsconfig.lib.json create mode 100644 npm/ng-packs/packages/setting-management/tsconfig.spec.json create mode 100644 npm/ng-packs/packages/setting-management/tslint.json create mode 100644 npm/ng-packs/packages/theme-shared/src/lib/animations/fade.animations.ts create mode 100644 npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json index 819ae99025..617e907f3f 100644 --- a/npm/ng-packs/angular.json +++ b/npm/ng-packs/angular.json @@ -253,6 +253,41 @@ } } } + }, + "setting-management": { + "projectType": "library", + "root": "packages/setting-management", + "sourceRoot": "packages/setting-management/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/setting-management/tsconfig.lib.json", + "project": "packages/setting-management/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/setting-management/src/test.ts", + "tsConfig": "packages/setting-management/tsconfig.spec.json", + "karmaConfig": "packages/setting-management/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/setting-management/tsconfig.lib.json", + "packages/setting-management/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } } }, "defaultProject": "core" diff --git a/npm/ng-packs/packages/account/src/lib/constants/routes.ts b/npm/ng-packs/packages/account/src/lib/constants/routes.ts index c1ba80be83..b1a29f8009 100644 --- a/npm/ng-packs/packages/account/src/lib/constants/routes.ts +++ b/npm/ng-packs/packages/account/src/lib/constants/routes.ts @@ -1,11 +1,14 @@ import { ABP, eLayoutType } from '@abp/ng.core'; -export const ACCOUNT_ROUTES = [ - { - name: 'Account', - path: 'account', - invisible: true, - layout: eLayoutType.application, - children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], - }, -] as ABP.FullRoute[]; +export const ACCOUNT_ROUTES = { + routes: [ + { + name: 'Account', + path: 'account', + invisible: true, + layout: eLayoutType.application, + children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], + }, + ] as ABP.FullRoute[], + settings: [], +}; diff --git a/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts index 30852429f5..517e1974ad 100644 --- a/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts +++ b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts @@ -57,7 +57,7 @@ function findLayout(segments: UrlSegment[], routes: ABP.FullRoute[]): eLayoutTyp if (route.children && route.children.length && segments.length > 1) { const child = route.children.find(c => c.path === segments[1].path); - if (child.layout) { + if (child && child.layout) { layout = child.layout; } } diff --git a/npm/ng-packs/packages/core/src/lib/plugins/config/config.plugin.ts b/npm/ng-packs/packages/core/src/lib/plugins/config/config.plugin.ts index 361c48b08b..9064461f53 100644 --- a/npm/ng-packs/packages/core/src/lib/plugins/config/config.plugin.ts +++ b/npm/ng-packs/packages/core/src/lib/plugins/config/config.plugin.ts @@ -38,9 +38,9 @@ export class ConfigPlugin implements NgxsPlugin { function transformRoutes(routes: Routes = [], wrappers: ABP.FullRoute[] = []): any { const abpRoutes: ABP.FullRoute[] = routes .filter(route => { - return snq(() => route.data.routes.find(r => r.path === route.path), false); + return snq(() => route.data.routes.routes.find(r => r.path === route.path), false); }) - .reduce((acc, val) => [...acc, ...val.data.routes], []); + .reduce((acc, val) => [...acc, ...val.data.routes.routes], []); wrappers = abpRoutes.filter(ar => ar.wrapper); const transformed = [] as ABP.FullRoute[]; @@ -48,7 +48,7 @@ function transformRoutes(routes: Routes = [], wrappers: ABP.FullRoute[] = []): a .filter(route => (route.data || {}).routes && (route.component || route.loadChildren)) .forEach(route => { const abpPackage = abpRoutes.find( - abp => abp.path.toLowerCase() === route.path.toLowerCase() && snq(() => route.data.routes.length, false), + abp => abp.path.toLowerCase() === route.path.toLowerCase() && snq(() => route.data.routes.routes.length, false), ); const { length } = transformed; diff --git a/npm/ng-packs/packages/core/src/lib/states/config.state.ts b/npm/ng-packs/packages/core/src/lib/states/config.state.ts index 9ad6c08527..aa3fa0e5e2 100644 --- a/npm/ng-packs/packages/core/src/lib/states/config.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/config.state.ts @@ -60,6 +60,17 @@ export class ConfigState { return selector; } + static getRoute(path?: string, name?: string) { + const selector = createSelector( + [ConfigState], + function(state: Config.State) { + return findRoute(state.routes, path, name); + }, + ); + + return selector; + } + static getApiUrl(key?: string) { const selector = createSelector( [ConfigState], @@ -229,3 +240,22 @@ function patchRouteDeep( return organizeRoutes(routes); } + +function findRoute(routes: ABP.FullRoute[], path?: string, name?: string) { + let foundRoute; + routes.forEach(route => { + if (foundRoute) return; + + if (path && route.path === path) { + foundRoute = route; + } else if (name && route.name === name) { + foundRoute = route; + return; + } else if (route.children && route.children.length) { + foundRoute = findRoute(route.children, path, name); + return; + } + }); + + return foundRoute; +} diff --git a/npm/ng-packs/packages/core/src/lib/utils/common-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/common-utils.ts new file mode 100644 index 0000000000..ba76b0f97f --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/common-utils.ts @@ -0,0 +1,4 @@ +export function noop() { + const fn = function() {}; + return fn; +} diff --git a/npm/ng-packs/packages/core/src/lib/utils/index.ts b/npm/ng-packs/packages/core/src/lib/utils/index.ts index e2a72ebd3f..0043152ada 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/index.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/index.ts @@ -1,3 +1,4 @@ +export * from './common-utils'; export * from './generator-utils'; export * from './initial-utils'; export * from './route-utils'; diff --git a/npm/ng-packs/packages/identity/src/lib/constants/routes.ts b/npm/ng-packs/packages/identity/src/lib/constants/routes.ts index f8dbcc88df..b524bac753 100644 --- a/npm/ng-packs/packages/identity/src/lib/constants/routes.ts +++ b/npm/ng-packs/packages/identity/src/lib/constants/routes.ts @@ -1,22 +1,25 @@ import { eLayoutType, ABP } from '@abp/ng.core'; -export const IDENTITY_ROUTES = [ - { - name: 'AbpUiNavigation::Menu:Administration', - path: '', - order: 1, - wrapper: true, - }, - { - name: 'AbpIdentity::Menu:IdentityManagement', - path: 'identity', - order: 1, - parentName: 'AbpUiNavigation::Menu:Administration', - layout: eLayoutType.application, - iconClass: 'fa fa-id-card-o', - children: [ - { path: 'roles', name: 'AbpIdentity::Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, - { path: 'users', name: 'AbpIdentity::Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, - ], - }, -] as ABP.FullRoute[]; +export const IDENTITY_ROUTES = { + routes: [ + { + name: 'AbpUiNavigation::Menu:Administration', + path: '', + order: 1, + wrapper: true, + }, + { + name: 'AbpIdentity::Menu:IdentityManagement', + path: 'identity', + order: 1, + parentName: 'AbpUiNavigation::Menu:Administration', + layout: eLayoutType.application, + iconClass: 'fa fa-id-card-o', + children: [ + { path: 'roles', name: 'AbpIdentity::Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, + { path: 'users', name: 'AbpIdentity::Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, + ], + }, + ] as ABP.FullRoute[], + settings: [], +}; diff --git a/npm/ng-packs/packages/setting-management/README.md b/npm/ng-packs/packages/setting-management/README.md new file mode 100644 index 0000000000..54044cc8c0 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/README.md @@ -0,0 +1 @@ +

 @abp/ng.setting-management

\ No newline at end of file diff --git a/npm/ng-packs/packages/setting-management/karma.conf.js b/npm/ng-packs/packages/setting-management/karma.conf.js new file mode 100644 index 0000000000..51ccc0578d --- /dev/null +++ b/npm/ng-packs/packages/setting-management/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/setting-management'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/setting-management/ng-package.json b/npm/ng-packs/packages/setting-management/ng-package.json new file mode 100644 index 0000000000..e5ba9f97fc --- /dev/null +++ b/npm/ng-packs/packages/setting-management/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/setting-management", + "lib": { + "entryFile": "src/public-api.ts" + }, + "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared"] +} diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json new file mode 100644 index 0000000000..354fa248c3 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/package.json @@ -0,0 +1,10 @@ +{ + "name": "@abp/ng.setting-management", + "version": "0.0.1", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.3" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/setting-management/src/lib/components/index.ts b/npm/ng-packs/packages/setting-management/src/lib/components/index.ts new file mode 100644 index 0000000000..4f59d5c056 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/components/index.ts @@ -0,0 +1 @@ +export * from './setting/setting.component'; diff --git a/npm/ng-packs/packages/setting-management/src/lib/components/services/initial.service.ts b/npm/ng-packs/packages/setting-management/src/lib/components/services/initial.service.ts new file mode 100644 index 0000000000..44f289a362 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/components/services/initial.service.ts @@ -0,0 +1,17 @@ +import { SettingTab } from '@abp/ng.theme.shared'; +import { Injectable, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import snq from 'snq'; + +@Injectable() +export class InitialService { + public settings: SettingTab[]; + + constructor(private router: Router) { + this.settings = this.router.config + .map(route => snq(() => route.data.routes.settings)) + .filter(settings => settings && settings.length) + .reduce((acc, val) => [...acc, ...val], []) + .sort((a, b) => a.order - b.order); + } +} diff --git a/npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.html b/npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.html new file mode 100644 index 0000000000..60da5a0508 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.html @@ -0,0 +1,176 @@ +
+
+

{{'AbpSettingManagement::Settings' | abpLocalization}}

+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+

{{ selected.name | abpLocalization }}

+
+ + +
+
+

Lepton theme settings

+
+ +
+
+
+
+
+ + + + +
+
+ + + + +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+

Account

+
+ +
+
+
+
+
+ +
+
+
+
+

Two factor login settings

+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
diff --git a/npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.ts b/npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.ts new file mode 100644 index 0000000000..d61df13012 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/components/setting/setting.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; +import { SettingTab } from '@abp/ng.theme.shared'; +import { InitialService } from '../services/initial.service'; + +@Component({ + selector: 'abp-setting', + templateUrl: './setting.component.html', +}) +export class SettingComponent implements OnInit { + settings: SettingTab[]; + + selected = {} as SettingTab; + + constructor(private initialService: InitialService) {} + + ngOnInit() { + this.settings = this.initialService.settings; + this.selected = this.settings[0]; + } +} diff --git a/npm/ng-packs/packages/setting-management/src/lib/constants/index.ts b/npm/ng-packs/packages/setting-management/src/lib/constants/index.ts new file mode 100644 index 0000000000..a3820983e2 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/constants/index.ts @@ -0,0 +1 @@ +export * from './routes'; diff --git a/npm/ng-packs/packages/setting-management/src/lib/constants/routes.ts b/npm/ng-packs/packages/setting-management/src/lib/constants/routes.ts new file mode 100644 index 0000000000..067f8e9c02 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/constants/routes.ts @@ -0,0 +1,15 @@ +import { ABP, eLayoutType } from '@abp/ng.core'; + +export const SETTING_MANAGEMENT_ROUTES = { + routes: [ + { + name: 'Settings', + path: 'setting-management', + parentName: 'AbpUiNavigation::Menu:Administration', + layout: eLayoutType.application, + order: 6, + iconClass: 'fa fa-cog', + }, + ] as ABP.FullRoute[], + settings: [], +}; diff --git a/npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts b/npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts new file mode 100644 index 0000000000..dcafc14f41 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts @@ -0,0 +1,18 @@ +import { DynamicLayoutComponent } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { SettingComponent } from './components/setting/setting.component'; + +const routes: Routes = [ + { + path: '', + component: DynamicLayoutComponent, + children: [{ path: '', component: SettingComponent }], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class SettingManagementRoutingModule {} diff --git a/npm/ng-packs/packages/setting-management/src/lib/setting-management.module.ts b/npm/ng-packs/packages/setting-management/src/lib/setting-management.module.ts new file mode 100644 index 0000000000..6c0918788c --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/lib/setting-management.module.ts @@ -0,0 +1,15 @@ +import { CoreModule, noop } from '@abp/ng.core'; +import { NgModule, ModuleWithProviders, APP_INITIALIZER, Self } from '@angular/core'; +import { SettingComponent } from './components/setting/setting.component'; +import { SettingManagementRoutingModule } from './setting-management-routing.module'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { InitialService } from './components/services/initial.service'; + +@NgModule({ + declarations: [SettingComponent], + imports: [SettingManagementRoutingModule, CoreModule, ThemeSharedModule], + providers: [InitialService], +}) +export class SettingManagementModule { + constructor(@Self() initialService: InitialService) {} +} diff --git a/npm/ng-packs/packages/setting-management/src/public-api.ts b/npm/ng-packs/packages/setting-management/src/public-api.ts new file mode 100644 index 0000000000..1a713b6a24 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/public-api.ts @@ -0,0 +1,3 @@ +export * from './lib/setting-management.module'; +export * from './lib/components'; +export * from './lib/constants'; diff --git a/npm/ng-packs/packages/setting-management/src/test.ts b/npm/ng-packs/packages/setting-management/src/test.ts new file mode 100644 index 0000000000..978c64fb83 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/setting-management/tsconfig.lib.json b/npm/ng-packs/packages/setting-management/tsconfig.lib.json new file mode 100644 index 0000000000..bd23948e59 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/tsconfig.lib.json @@ -0,0 +1,26 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/npm/ng-packs/packages/setting-management/tsconfig.spec.json b/npm/ng-packs/packages/setting-management/tsconfig.spec.json new file mode 100644 index 0000000000..16da33db07 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/setting-management/tslint.json b/npm/ng-packs/packages/setting-management/tslint.json new file mode 100644 index 0000000000..8c3919ea62 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts b/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts index 2fcc7004bb..6982285e95 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts @@ -1,19 +1,22 @@ import { ABP, eLayoutType } from '@abp/ng.core'; -export const TENANT_MANAGEMENT_ROUTES = [ - { - name: 'AbpTenantManagement::Menu:TenantManagement', - path: 'tenant-management', - parentName: 'AbpUiNavigation::Menu:Administration', - layout: eLayoutType.application, - iconClass: 'fa fa-users', - children: [ - { - path: 'tenants', - name: 'AbpTenantManagement::Tenants', - order: 1, - requiredPolicy: 'AbpTenantManagement.Tenants', - }, - ], - }, -] as ABP.FullRoute[]; +export const TENANT_MANAGEMENT_ROUTES = { + routes: [ + { + name: 'AbpTenantManagement::Menu:TenantManagement', + path: 'tenant-management', + parentName: 'AbpUiNavigation::Menu:Administration', + layout: eLayoutType.application, + iconClass: 'fa fa-users', + children: [ + { + path: 'tenants', + name: 'AbpTenantManagement::Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }, + ] as ABP.FullRoute[], + settings: [], +}; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/animations/fade.animations.ts b/npm/ng-packs/packages/theme-shared/src/lib/animations/fade.animations.ts new file mode 100644 index 0000000000..e03c768fbe --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/animations/fade.animations.ts @@ -0,0 +1,7 @@ +import { animate, state, style, transition, trigger } from '@angular/animations'; + +export const fade = trigger('fade', [ + state('void', style({ opacity: 1 })), + transition(':enter', [style({ opacity: 0 }), animate(250)]), + transition(':leave', animate(250, style({ opacity: 0 }))), +]); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/animations/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/animations/index.ts index 6fd1d939c4..6a03cccac4 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/animations/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/animations/index.ts @@ -1 +1,2 @@ -export * from './slide.animation'; +export * from './fade.animations'; +export * from './slide.animations'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts index 2da3330aa7..da311b86be 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts @@ -1,2 +1,3 @@ export * from './confirmation'; export * from './toaster'; +export * from './setting-management'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts new file mode 100644 index 0000000000..68bd0335a5 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts @@ -0,0 +1,8 @@ +import { Type } from '@angular/core'; + +export interface SettingTab { + name: string; + order: number; + component: Type; + requiredPolicy?: string; +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts index c2d920118d..639c6e5979 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -16,6 +16,7 @@ import { ButtonComponent } from './components/button/button.component'; import { ValidationErrorComponent } from './components/errors/validation-error.component'; import { ChangePasswordComponent } from './components/change-password/change-password.component'; import { ProfileComponent } from './components/profile/profile.component'; +import { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component'; export function appendScript(injector: Injector) { const fn = function() { @@ -63,6 +64,7 @@ export function appendScript(injector: Injector) { ValidationErrorComponent, ChangePasswordComponent, ProfileComponent, + BreadcrumbComponent, ], exports: [ ButtonComponent, @@ -72,6 +74,7 @@ export function appendScript(injector: Injector) { LoaderBarComponent, ChangePasswordComponent, ProfileComponent, + BreadcrumbComponent, ], entryComponents: [ErrorComponent, ValidationErrorComponent], })