({
name: 'ConfigState',
@@ -90,14 +90,31 @@ export class ConfigState {
return selector;
}
- static getSetting(key: string) {
+ static getSetting(key: string, findContain?: boolean) {
const selector = createSelector(
[ConfigState],
(state: Config.State) => {
return snq(() => state.setting.values[key]);
},
);
+ return selector;
+ }
+
+ static getSettings(keyword?: string) {
+ const selector = createSelector(
+ [ConfigState],
+ (state: Config.State) => {
+ if (keyword) {
+ const keys = snq(() => Object.keys(state.setting.values).filter(key => key.indexOf(keyword) > -1), []);
+ if (keys.length) {
+ return keys.reduce((acc, key) => ({ ...acc, [key]: state.setting.values[key] }), {});
+ }
+ }
+
+ return snq(() => state.setting.values, {});
+ },
+ );
return selector;
}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.html b/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.html
index 3e091aa5a1..89ab7f1b69 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.html
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.html
@@ -11,7 +11,7 @@
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/animations/slide.animations.ts b/npm/ng-packs/packages/theme-shared/src/lib/animations/slide.animations.ts
index 90f46662be..32ff155e55 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/animations/slide.animations.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/animations/slide.animations.ts
@@ -1,6 +1,7 @@
import { animate, state, style, transition, trigger, query } from '@angular/animations';
-export const slideFromBottom = trigger('routeAnimations', [
- state('void', style({ 'margin-top': '20px', opacity: '0' })),
- state('*', style({ 'margin-top': '0px', opacity: '1' })),
- transition(':enter', [animate('0.2s ease-out', style({ opacity: '1', 'margin-top': '0px' }))]),
+export const slideFromBottom = trigger('slideFromBottom', [
+ transition('* <=> *', [
+ style({ 'margin-top': '20px', opacity: '0' }),
+ animate('0.2s ease-out', style({ opacity: '1', 'margin-top': '0px' })),
+ ]),
]);
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts
index 50dab84c0f..59c6b3c13d 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts
@@ -6,14 +6,14 @@ import { Component, Input } from '@angular/core';
- `
+ `,
})
export class ButtonComponent {
@Input()
buttonClass = 'btn btn-primary';
@Input()
- type = 'button';
+ buttonType; // TODO: Add initial value.
@Input()
iconClass: string;
@@ -24,6 +24,11 @@ export class ButtonComponent {
@Input()
disabled = false;
+ /**
+ * @deprecated Use buttonType instead. To be deleted in v1
+ */
+ @Input() type = 'button';
+
get icon(): string {
return `${this.loading ? 'fa fa-pulse fa-spinner' : this.iconClass || 'd-none'}`;
}
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/contants/styles.ts b/npm/ng-packs/packages/theme-shared/src/lib/contants/styles.ts
index c7fa014373..a53bd4573b 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/contants/styles.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/contants/styles.ts
@@ -38,7 +38,7 @@ export default `
left: 0 !important;
width: 100% !important;
height: 100% !important;
- background-color: rgba(0, 0, 0, .6) !important;
+ background-color: rgba(0, 0, 0, 0.6) !important;
z-index: 1040 !important;
}
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 a1839f6217..b4348ca897 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
@@ -32,9 +32,9 @@ export function appendScript(injector: Injector) {
'style',
styles,
'head',
- 'afterbegin'
- ) /* lazyLoadService.load(null, 'script', scripts) */
- ).pipe(take(1));
+ 'afterbegin',
+ ) /* lazyLoadService.load(null, 'script', scripts) */,
+ ).toPromise();
};
return fn;
@@ -53,7 +53,7 @@ export function appendScript(injector: Injector) {
ModalComponent,
ProfileComponent,
TableEmptyMessageComponent,
- ToastComponent
+ ToastComponent,
],
exports: [
BreadcrumbComponent,
@@ -65,9 +65,9 @@ export function appendScript(injector: Injector) {
ModalComponent,
ProfileComponent,
TableEmptyMessageComponent,
- ToastComponent
+ ToastComponent,
],
- entryComponents: [ErrorComponent]
+ entryComponents: [ErrorComponent],
})
export class ThemeSharedModule {
static forRoot(): ModuleWithProviders {
@@ -78,10 +78,10 @@ export class ThemeSharedModule {
provide: APP_INITIALIZER,
multi: true,
deps: [Injector, ErrorHandler],
- useFactory: appendScript
+ useFactory: appendScript,
},
- { provide: MessageService, useClass: MessageService }
- ]
+ { provide: MessageService, useClass: MessageService },
+ ],
};
}
}
diff --git a/templates/app/angular/angular.json b/templates/app/angular/angular.json
index 8a844d2562..f7bb4656fe 100644
--- a/templates/app/angular/angular.json
+++ b/templates/app/angular/angular.json
@@ -23,17 +23,31 @@
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"aot": false,
- "assets": [
- "src/favicon.ico",
- "src/assets"
- ],
+ "extractCss": true,
+ "assets": ["src/favicon.ico", "src/assets"],
"styles": [
"src/styles.scss",
"node_modules/bootstrap/dist/css/bootstrap.min.css",
- "node_modules/font-awesome/css/font-awesome.min.css",
- "node_modules/primeng/resources/themes/nova-light/theme.css",
- "node_modules/primeicons/primeicons.css",
- "node_modules/primeng/resources/primeng.min.css"
+ {
+ "input": "node_modules/font-awesome/css/font-awesome.min.css",
+ "lazy": true,
+ "bundleName": "font-awesome.min"
+ },
+ {
+ "input": "node_modules/primeng/resources/themes/nova-light/theme.css",
+ "lazy": true,
+ "bundleName": "primeng-nova-light-theme"
+ },
+ {
+ "input": "node_modules/primeicons/primeicons.css",
+ "lazy": true,
+ "bundleName": "primeicons"
+ },
+ {
+ "input": "node_modules/primeng/resources/primeng.min.css",
+ "lazy": true,
+ "bundleName": "primeng.min"
+ }
],
"scripts": []
},
@@ -100,10 +114,7 @@
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
- "assets": [
- "src/favicon.ico",
- "src/assets"
- ],
+ "assets": ["src/favicon.ico", "src/assets"],
"styles": [
"src/styles.scss",
"node_modules/bootstrap/dist/css/bootstrap.min.css",
@@ -118,14 +129,8 @@
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
- "tsConfig": [
- "tsconfig.app.json",
- "tsconfig.spec.json",
- "e2e/tsconfig.json"
- ],
- "exclude": [
- "**/node_modules/**"
- ]
+ "tsConfig": ["tsconfig.app.json", "tsconfig.spec.json", "e2e/tsconfig.json"],
+ "exclude": ["**/node_modules/**"]
}
},
"e2e": {
@@ -143,8 +148,5 @@
}
}
},
- "defaultProject": "myProjectName",
- "cli": {
- "analytics": "07ef29be-2b85-4919-9f78-44994f63b8b7"
- }
-}
\ No newline at end of file
+ "defaultProject": "myProjectName"
+}
diff --git a/templates/app/angular/src/app/app.component.ts b/templates/app/angular/src/app/app.component.ts
index bf2a27962a..e89c73184d 100644
--- a/templates/app/angular/src/app/app.component.ts
+++ b/templates/app/angular/src/app/app.component.ts
@@ -1,4 +1,5 @@
-import { Component } from '@angular/core';
+import { LazyLoadService } from '@abp/ng.core';
+import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-root',
@@ -7,4 +8,17 @@ import { Component } from '@angular/core';
`,
})
-export class AppComponent {}
+export class AppComponent implements OnInit {
+ constructor(private lazyLoadService: LazyLoadService) {}
+
+ ngOnInit() {
+ this.lazyLoadService
+ .load(
+ ['primeng.min.css', 'primeicons.css', 'primeng-nova-light-theme.css', 'font-awesome.min.css'],
+ 'style',
+ null,
+ 'head',
+ )
+ .subscribe();
+ }
+}