From 46e84ba155c68cc8ab56328ea0751daf1eeb069f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20H=C3=A4hnlein?= Date: Fri, 24 Jan 2020 10:05:26 +0100 Subject: [PATCH] feat: extended multiple theme support to control system icons (e.g. favicon), manifest.webmanifest and theme-color as well (#88, #100) closes: #88 --- .gitlab-ci.yml | 8 +-- angular.json | 6 +-- src/app/core/utils/theme/theme.service.ts | 46 +++++++++++++++--- src/assets/themes/blue/img/favicon.ico | Bin 0 -> 102134 bytes .../themes/blue => themes/blue/img}/logo.png | Bin src/assets/themes/blue/img/logo_192x192.png | Bin 0 -> 2717 bytes src/assets/themes/blue/img/logo_256x256.png | Bin 0 -> 3521 bytes src/assets/themes/blue/img/logo_384x384.png | Bin 0 -> 5239 bytes src/assets/themes/blue/img/logo_512x512.png | Bin 0 -> 7293 bytes .../themes/blue/img/logo_apple_120x120.png | Bin 0 -> 3035 bytes .../themes/blue/img/logo_apple_152x152.png | Bin 0 -> 3856 bytes .../themes/blue/img/logo_apple_167x167.png | Bin 0 -> 5267 bytes .../themes/blue/img/logo_apple_180x180.png | Bin 0 -> 2763 bytes .../blue => themes/blue/img}/logo_mobile.png | Bin src/assets/themes/blue/manifest.webmanifest | 31 ++++++++++++ .../themes/default/img}/favicon.ico | Bin src/assets/{ => themes/default}/img/logo.png | Bin .../{ => themes/default}/img/logo_192x192.png | Bin .../{ => themes/default}/img/logo_256x256.png | Bin .../{ => themes/default}/img/logo_384x384.png | Bin .../{ => themes/default}/img/logo_512x512.png | Bin .../default}/img/logo_apple_120x120.png | Bin .../default}/img/logo_apple_152x152.png | Bin .../default}/img/logo_apple_167x167.png | Bin .../default}/img/logo_apple_180x180.png | Bin .../{ => themes/default}/img/logo_mobile.png | Bin .../themes/default}/manifest.webmanifest | 8 +-- src/environments/environment.model.ts | 1 + src/index.html | 12 ++--- src/styles/themes/blue/variables.scss | 4 +- src/styles/themes/default/variables.scss | 4 +- 31 files changed, 90 insertions(+), 30 deletions(-) create mode 100644 src/assets/themes/blue/img/favicon.ico rename src/assets/{img/themes/blue => themes/blue/img}/logo.png (100%) create mode 100644 src/assets/themes/blue/img/logo_192x192.png create mode 100644 src/assets/themes/blue/img/logo_256x256.png create mode 100644 src/assets/themes/blue/img/logo_384x384.png create mode 100644 src/assets/themes/blue/img/logo_512x512.png create mode 100644 src/assets/themes/blue/img/logo_apple_120x120.png create mode 100644 src/assets/themes/blue/img/logo_apple_152x152.png create mode 100644 src/assets/themes/blue/img/logo_apple_167x167.png create mode 100644 src/assets/themes/blue/img/logo_apple_180x180.png rename src/assets/{img/themes/blue => themes/blue/img}/logo_mobile.png (100%) create mode 100644 src/assets/themes/blue/manifest.webmanifest rename src/{ => assets/themes/default/img}/favicon.ico (100%) rename src/assets/{ => themes/default}/img/logo.png (100%) rename src/assets/{ => themes/default}/img/logo_192x192.png (100%) rename src/assets/{ => themes/default}/img/logo_256x256.png (100%) rename src/assets/{ => themes/default}/img/logo_384x384.png (100%) rename src/assets/{ => themes/default}/img/logo_512x512.png (100%) rename src/assets/{ => themes/default}/img/logo_apple_120x120.png (100%) rename src/assets/{ => themes/default}/img/logo_apple_152x152.png (100%) rename src/assets/{ => themes/default}/img/logo_apple_167x167.png (100%) rename src/assets/{ => themes/default}/img/logo_apple_180x180.png (100%) rename src/assets/{ => themes/default}/img/logo_mobile.png (100%) rename src/{ => assets/themes/default}/manifest.webmanifest (74%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3a5c871757..7afc262045 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -379,7 +379,7 @@ deploy_demo_b2b: --name ${SERVICE} --env ICM_BASE_URL=$ICM_BASE_URL --env LOGGING=true - --env THEME=blue + --env THEME=blue|688dc3 --env FEATURES=quoting,compare,recently,businessCustomerRegistration,advancedVariationHandling,sentry --env ICM_CHANNEL=inSPIRED-inTRONICS_Business-Site --env SENTRY_DSN=${SENTRY_DSN} @@ -547,7 +547,7 @@ deploy_review_b2c: -e PWA_2_SUBDOMAIN=b2b -e PWA_2_CHANNEL=inSPIRED-inTRONICS_Business-Site -e PWA_2_FEATURES=quoting,recently,compare,businessCustomerRegistration,advancedVariationHandling,sentry - -e PWA_2_THEME=blue + -e PWA_2_THEME=blue|688dc3 -e PWA_3_SUBDOMAIN=de -e PWA_3_CHANNEL=inSPIRED-inTRONICS-Site -e PWA_3_LANG=de_DE @@ -556,7 +556,7 @@ deploy_review_b2c: -e PWA_4_CHANNEL=inSPIRED-inTRONICS-Site -e PWA_4_APPLICATION=smb-responsive -e PWA_4_FEATURES=quoting - -e PWA_4_THEME=blue + -e PWA_4_THEME=blue|688dc3 ${CI_REGISTRY_IMAGE}:nginx-${CI_COMMIT_REF_SLUG} - sleep 10 - docker run --rm --add-host $DEMO_SERVER_NAME:$DEMO_SERVER_IP mwendler/wget --wait 10 --tries 10 --retry-connrefused "http://$DEMO_SERVER_NAME:3000/${CI_COMMIT_REF_SLUG}-pwa-b2c" @@ -614,7 +614,7 @@ deploy_review_b2b: -e LOGGING=true -e SENTRY_DSN=${SENTRY_DSN} -e ICM_BASE_URL=${ICM_BASE_URL} - -e THEME=blue + -e THEME=blue|688dc3 -e ICM_CHANNEL=inSPIRED-inTRONICS_Business-Site -e FEATURES=quoting,recently,compare,businessCustomerRegistration,advancedVariationHandling,sentry --add-host $ICM_HOST:$ICM_IP diff --git a/angular.json b/angular.json index 27b165ffd4..35d5480c00 100644 --- a/angular.json +++ b/angular.json @@ -27,11 +27,7 @@ "tsConfig": "tsconfig.app.json", "aot": true, "extractCss": true, - "assets": [ - "src/favicon.ico", - "src/assets", - "src/manifest.webmanifest" - ], + "assets": ["src/assets"], "styles": [ { "input": "src/styles/themes/default/style.scss", diff --git a/src/app/core/utils/theme/theme.service.ts b/src/app/core/utils/theme/theme.service.ts index c863739b80..21e599cd8d 100644 --- a/src/app/core/utils/theme/theme.service.ts +++ b/src/app/core/utils/theme/theme.service.ts @@ -17,15 +17,32 @@ export class ThemeService { private head: HTMLElement; private themeLinks: HTMLElement[] = []; + private iconLink: HTMLLinkElement; + private webmanifestLink: HTMLLinkElement; + private appleTouchIconLink: HTMLLinkElement; + private appleTouchIcon152x152Link: HTMLLinkElement; + private appleTouchIcon167x167Link: HTMLLinkElement; + private appleTouchIcon180x180Link: HTMLLinkElement; + private themeColor: HTMLMetaElement; + constructor( private rendererFactory: RendererFactory2, @Inject(DOCUMENT) private document: Document, private store: Store<{}> - ) {} - - init() { + ) { this.head = this.document.head; this.renderer = this.rendererFactory.createRenderer(undefined, undefined); + + this.iconLink = this.document.querySelector('link[rel="icon"]'); + this.webmanifestLink = this.document.querySelector('link[rel="manifest"]'); + this.appleTouchIconLink = this.document.querySelector('link[rel="apple-touch-icon"]:not([sizes])'); + this.appleTouchIcon152x152Link = this.document.querySelector('link[rel="apple-touch-icon"][sizes="152x152"]'); + this.appleTouchIcon167x167Link = this.document.querySelector('link[rel="apple-touch-icon"][sizes="167x167"]'); + this.appleTouchIcon180x180Link = this.document.querySelector('link[rel="apple-touch-icon"][sizes="180x180"]'); + this.themeColor = this.document.querySelector('meta[name="theme-color"]'); + } + + init() { this.store .pipe(select(getTheme)) .pipe( @@ -33,12 +50,22 @@ export class ThemeService { filter(x => !!x) ) .subscribe(async theme => { - await this.loadCss(`${theme}.css`); + const themeData = theme.split('|'); + const themeName = themeData[0]; + const themeColor = themeData[1]; + + this.iconLink.setAttribute('href', `assets/themes/${themeName}/img/favicon.ico`); + this.webmanifestLink.setAttribute('href', `assets/themes/${themeName}/manifest.webmanifest`); + this.appleTouchIconLink.setAttribute('href', `assets/themes/${themeName}/img/logo_apple_120x120.png`); + this.appleTouchIcon152x152Link.setAttribute('href', `assets/themes/${themeName}/img/logo_apple_152x152.png`); + this.appleTouchIcon167x167Link.setAttribute('href', `assets/themes/${themeName}/img/logo_apple_167x167.png`); + this.appleTouchIcon180x180Link.setAttribute('href', `assets/themes/${themeName}/img/logo_apple_180x180.png`); - // remove style of previous theme - if (this.themeLinks.length === 2) { - this.renderer.removeChild(this.head, this.themeLinks.shift()); + if (themeColor) { + this.themeColor.setAttribute('content', `#${themeColor}`); } + + await this.loadCss(`${themeName}.css`); }); } @@ -51,6 +78,11 @@ export class ThemeService { this.renderer.setProperty(linkEl, 'onload', resolve); this.renderer.appendChild(this.head, linkEl); this.themeLinks = [...this.themeLinks, linkEl]; + + // remove style of previous theme + if (this.themeLinks.length === 2) { + this.renderer.removeChild(this.head, this.themeLinks.shift()); + } }); } } diff --git a/src/assets/themes/blue/img/favicon.ico b/src/assets/themes/blue/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..80cc6568d35fa160767989615b6c984c0af13558 GIT binary patch literal 102134 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 RQbN28mk`u!mKY$r{|_4{4-NnT literal 0 HcmV?d00001 diff --git a/src/assets/img/themes/blue/logo.png b/src/assets/themes/blue/img/logo.png similarity index 100% rename from src/assets/img/themes/blue/logo.png rename to src/assets/themes/blue/img/logo.png diff --git a/src/assets/themes/blue/img/logo_192x192.png b/src/assets/themes/blue/img/logo_192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..77c75c2873fba0f50f2c40fac4d9a05ab2c7f875 GIT binary patch literal 2717 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 A#Q*>R literal 0 HcmV?d00001 diff --git a/src/assets/themes/blue/img/logo_384x384.png b/src/assets/themes/blue/img/logo_384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..67fc0dc5fdfd3964770e149b5ea61a9b02d754f2 GIT binary patch literal 5239 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 literal 0 HcmV?d00001 diff --git a/src/assets/themes/blue/img/logo_apple_120x120.png b/src/assets/themes/blue/img/logo_apple_120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9d02f800a87cbb94067624e6e173518f2599ae GIT binary patch literal 3035 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 pz+>qQwmER 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/themes/blue/logo_mobile.png b/src/assets/themes/blue/img/logo_mobile.png similarity index 100% rename from src/assets/img/themes/blue/logo_mobile.png rename to src/assets/themes/blue/img/logo_mobile.png diff --git a/src/assets/themes/blue/manifest.webmanifest b/src/assets/themes/blue/manifest.webmanifest new file mode 100644 index 0000000000..d622cd8d8a --- /dev/null +++ b/src/assets/themes/blue/manifest.webmanifest @@ -0,0 +1,31 @@ +{ + "name": "Intershop Progressive Web App", + "short_name": "Intershop PWA", + "scope": "/", + "icons": [ + { + "src": "img/logo_192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "img/logo_256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "img/logo_384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "img/logo_512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#688dc3", + "background_color": "#FFFFFF", + "display": "standalone", + "start_url": "/home?utm_source=homescreen" +} diff --git a/src/favicon.ico b/src/assets/themes/default/img/favicon.ico similarity index 100% rename from src/favicon.ico rename to src/assets/themes/default/img/favicon.ico diff --git a/src/assets/img/logo.png b/src/assets/themes/default/img/logo.png similarity index 100% rename from src/assets/img/logo.png rename to src/assets/themes/default/img/logo.png diff --git a/src/assets/img/logo_192x192.png b/src/assets/themes/default/img/logo_192x192.png similarity index 100% rename from src/assets/img/logo_192x192.png rename to src/assets/themes/default/img/logo_192x192.png diff --git a/src/assets/img/logo_256x256.png b/src/assets/themes/default/img/logo_256x256.png similarity index 100% rename from src/assets/img/logo_256x256.png rename to src/assets/themes/default/img/logo_256x256.png diff --git a/src/assets/img/logo_384x384.png b/src/assets/themes/default/img/logo_384x384.png similarity index 100% rename from src/assets/img/logo_384x384.png rename to src/assets/themes/default/img/logo_384x384.png diff --git a/src/assets/img/logo_512x512.png b/src/assets/themes/default/img/logo_512x512.png similarity index 100% rename from src/assets/img/logo_512x512.png rename to src/assets/themes/default/img/logo_512x512.png diff --git a/src/assets/img/logo_apple_120x120.png b/src/assets/themes/default/img/logo_apple_120x120.png similarity index 100% rename from src/assets/img/logo_apple_120x120.png rename to src/assets/themes/default/img/logo_apple_120x120.png diff --git a/src/assets/img/logo_apple_152x152.png b/src/assets/themes/default/img/logo_apple_152x152.png similarity index 100% rename from src/assets/img/logo_apple_152x152.png rename to src/assets/themes/default/img/logo_apple_152x152.png diff --git a/src/assets/img/logo_apple_167x167.png b/src/assets/themes/default/img/logo_apple_167x167.png similarity index 100% rename from src/assets/img/logo_apple_167x167.png rename to src/assets/themes/default/img/logo_apple_167x167.png diff --git a/src/assets/img/logo_apple_180x180.png b/src/assets/themes/default/img/logo_apple_180x180.png similarity index 100% rename from src/assets/img/logo_apple_180x180.png rename to src/assets/themes/default/img/logo_apple_180x180.png diff --git a/src/assets/img/logo_mobile.png b/src/assets/themes/default/img/logo_mobile.png similarity index 100% rename from src/assets/img/logo_mobile.png rename to src/assets/themes/default/img/logo_mobile.png diff --git a/src/manifest.webmanifest b/src/assets/themes/default/manifest.webmanifest similarity index 74% rename from src/manifest.webmanifest rename to src/assets/themes/default/manifest.webmanifest index 5254078ad9..408ed9e870 100644 --- a/src/manifest.webmanifest +++ b/src/assets/themes/default/manifest.webmanifest @@ -4,22 +4,22 @@ "scope": "/", "icons": [ { - "src": "assets/img/logo_192x192.png", + "src": "img/logo_192x192.png", "sizes": "192x192", "type": "image/png" }, { - "src": "assets/img/logo_256x256.png", + "src": "img/logo_256x256.png", "sizes": "256x256", "type": "image/png" }, { - "src": "assets/img/logo_384x384.png", + "src": "img/logo_384x384.png", "sizes": "384x384", "type": "image/png" }, { - "src": "assets/img/logo_512x512.png", + "src": "img/logo_512x512.png", "sizes": "512x512", "type": "image/png" } diff --git a/src/environments/environment.model.ts b/src/environments/environment.model.ts index 27939fab84..3b47d9fb9c 100644 --- a/src/environments/environment.model.ts +++ b/src/environments/environment.model.ts @@ -77,5 +77,6 @@ export interface Environment { locales: Locale[]; // configuration of the styling theme ('default' if not configured) + // format: 'themeName|themeColor' e.g. theme: 'blue|688dc3', theme?: string; } diff --git a/src/index.html b/src/index.html index 05130676e8..557b5aaa31 100644 --- a/src/index.html +++ b/src/index.html @@ -5,12 +5,12 @@ Intershop Progressive Web App - - - - - - + + + + + +