From 5fa8fd26883914966ca736cf9ff33e175bec4eca Mon Sep 17 00:00:00 2001 From: lotte Date: Mon, 25 Mar 2019 10:41:56 +0100 Subject: [PATCH] added different themes, issue with ngrx --- config/environment.default.js | 10 ++++- package.json | 1 + .../home-page.component.default.scss | 3 ++ src/app/+home-page/home-page.component.scss | 3 +- .../home-page.component.preview-release.scss | 3 ++ src/app/app.component.html | 4 +- src/app/app.component.scss | 1 - src/app/app.component.ts | 17 +++++++-- src/app/core/core.effects.ts | 5 ++- src/app/core/core.module.ts | 2 + src/app/core/core.reducers.ts | 3 ++ src/app/core/theme/theme.actions.ts | 37 +++++++++++++++++++ src/app/core/theme/theme.effects.ts | 25 +++++++++++++ src/app/core/theme/theme.reducer.ts | 19 ++++++++++ src/app/core/theme/theme.service.ts | 33 +++++++++++++++++ src/config/global-config.interface.ts | 2 + src/config/theme.inferface.ts | 6 +++ webpack/webpack.common.js | 37 ++++++++++--------- yarn.lock | 6 +++ 19 files changed, 190 insertions(+), 27 deletions(-) create mode 100644 src/app/+home-page/home-page.component.default.scss create mode 100644 src/app/+home-page/themes/home-page.component.preview-release.scss create mode 100644 src/app/core/theme/theme.actions.ts create mode 100644 src/app/core/theme/theme.effects.ts create mode 100644 src/app/core/theme/theme.reducer.ts create mode 100644 src/app/core/theme/theme.service.ts create mode 100644 src/config/theme.inferface.ts diff --git a/config/environment.default.js b/config/environment.default.js index 387b2bb48a..c4f63fe596 100644 --- a/config/environment.default.js +++ b/config/environment.default.js @@ -155,5 +155,13 @@ module.exports = { edit: { undoTimeout: 10000 // 10 seconds } - } + }, + themes: [ + { + name: 'Preview Release', + cssClass: 'preview-release' + } + ] + + }; diff --git a/package.json b/package.json index 1f75da6c8b..ebcaafc932 100644 --- a/package.json +++ b/package.json @@ -224,6 +224,7 @@ "webpack-bundle-analyzer": "^2.13.1", "webpack-dev-middleware": "3.2.0", "webpack-dev-server": "^3.1.5", + "webpack-import-glob-loader": "^1.6.3", "webpack-merge": "4.1.4", "webpack-node-externals": "1.7.2" } diff --git a/src/app/+home-page/home-page.component.default.scss b/src/app/+home-page/home-page.component.default.scss new file mode 100644 index 0000000000..177ab29848 --- /dev/null +++ b/src/app/+home-page/home-page.component.default.scss @@ -0,0 +1,3 @@ +:host { + color: red; +} \ No newline at end of file diff --git a/src/app/+home-page/home-page.component.scss b/src/app/+home-page/home-page.component.scss index da97dd7a62..20c152008f 100644 --- a/src/app/+home-page/home-page.component.scss +++ b/src/app/+home-page/home-page.component.scss @@ -1 +1,2 @@ -@import '../../styles/variables.scss'; +@import './home-page.component.default'; +@import './themes/*'; diff --git a/src/app/+home-page/themes/home-page.component.preview-release.scss b/src/app/+home-page/themes/home-page.component.preview-release.scss new file mode 100644 index 0000000000..4cca79d1b3 --- /dev/null +++ b/src/app/+home-page/themes/home-page.component.preview-release.scss @@ -0,0 +1,3 @@ +:host-context(.preview-release) { + color: green; +} \ No newline at end of file diff --git a/src/app/app.component.html b/src/app/app.component.html index 898208db80..b6b0e202df 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,5 +1,5 @@ -
- +
+
{ + return createSelector(coreSelector, (state: CoreState) => state['theme']); +} + +/** + * Service that dispatches to and reads from the Theme state in the store + */ +@Injectable() +export class ThemeService { + constructor(private store: Store) { + + } + + public getCurrentTheme(): Observable { + return this.store.pipe( + select(themeStateSelector()), + map((state: ThemeState) => state.theme) + ); + } + + public setCurrentTheme(theme: Theme): void { + return this.store.dispatch(new SetThemeAction(theme)); + } +} \ No newline at end of file diff --git a/src/config/global-config.interface.ts b/src/config/global-config.interface.ts index d83ec6e4d8..22b4b0500f 100644 --- a/src/config/global-config.interface.ts +++ b/src/config/global-config.interface.ts @@ -8,6 +8,7 @@ import { FormConfig } from './form-config.interfaces'; import {LangConfig} from './lang-config.interface'; import { BrowseByConfig } from './browse-by-config.interface'; import { ItemPageConfig } from './item-page-config.interface'; +import { Theme } from './theme.inferface'; export interface GlobalConfig extends Config { ui: ServerConfig; @@ -25,4 +26,5 @@ export interface GlobalConfig extends Config { languages: LangConfig[]; browseBy: BrowseByConfig; item: ItemPageConfig; + themes: Theme[]; } diff --git a/src/config/theme.inferface.ts b/src/config/theme.inferface.ts new file mode 100644 index 0000000000..dc5a870f6e --- /dev/null +++ b/src/config/theme.inferface.ts @@ -0,0 +1,6 @@ +import { Config } from './config.interface'; + +export interface Theme extends Config { + name: string; + cssClass: string; +} diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index 7fb4656a15..3dac48b1e2 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -22,10 +22,11 @@ module.exports = { module: "empty" }, module: { - rules: [{ - test: /\.ts$/, - loader: '@ngtools/webpack' - }, + rules: [ + { + test: /\.ts$/, + loader: '@ngtools/webpack' + }, { test: /\.css$/, use: [{ @@ -52,19 +53,20 @@ module.exports = { { test: /\.scss$/, exclude: [/node_modules/, - path.resolve(__dirname, '..', 'src/styles/_exposed_variables.scss') + path.resolve(__dirname, '..', 'src/styles/_exposed_variables.scss') ], - use: [{ - loader: 'to-string-loader', - options: { - sourceMap: true - } - }, { - loader: 'raw-loader', - options: { - sourceMap: true - } - }, + use: [ + { + loader: 'to-string-loader', + options: { + sourceMap: true + } + }, { + loader: 'raw-loader', + options: { + sourceMap: true + } + }, { loader: 'resolve-url-loader', options: { @@ -76,7 +78,8 @@ module.exports = { options: { sourceMap: true } - } + }, + 'webpack-import-glob-loader' ] }, { diff --git a/yarn.lock b/yarn.lock index 50cf67c8d8..42bfd33486 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10939,6 +10939,12 @@ webpack-dev-server@^3.1.5: webpack-log "^2.0.0" yargs "12.0.1" +webpack-import-glob-loader@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/webpack-import-glob-loader/-/webpack-import-glob-loader-1.6.3.tgz#1b1de573f49c2c2afdb814dc13b44b2111b2ea7b" + dependencies: + glob "^5.0.15" + webpack-log@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d"