import {Component, Input} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; import {EnvProperties} from '../../openaireLibrary/utils/properties/env-properties'; import {LayoutService} from "../../openaireLibrary/services/layout.service"; import {CustomizationOptions} from "./CustomizationOptions"; import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper"; import {PiwikHelper} from "../piwikHelper"; import {StringUtils} from "../../openaireLibrary/utils/string-utils.class"; declare var appendCss: any; @Component({ selector: 'customization', template: ` ` }) export class CustomizationComponent { @Input() communityId; layout: CustomizationOptions; constructor(private route: ActivatedRoute, private router: Router, private _layoutService: LayoutService ) { } public ngOnInit() { this.route.data .subscribe((data: { envSpecific: EnvProperties }) => { this.route.queryParams.subscribe(params => { if(params['layout']) { this.layout = JSON.parse(StringUtils.URIDecode(params['layout'])); this.buildCss(); }else{ // this.properties = data.envSpecific; //com.communityId, // data.envSpecific.adminToolsAPIURL + '/' this._layoutService.mockLayout().subscribe( layout => { this.layout = layout; this.buildCss(); } ); } }); }); } private buildCss() { // console.log(this.layout); document.documentElement.style.setProperty('--portal-main-color', this.layout.mainColor); document.documentElement.style.setProperty('--portal-dark-color', this.layout.secondaryColor); let css = ` /*Panel background*/ .communityPanelBackground, .communityPanelBackground .uk-section-primary { background-image: linear-gradient(` + (this.layout.panel.background.gradientDirection != null ? this.layout.panel.background.gradientDirection : 'to right') + `,` + this.layout.mainColor + `,` + this.layout.secondaryColor + `);` + ` border-style: ` + (this.layout.panel.background.borderStyle != null ? this.layout.panel.background.borderStyle : 'solid') + `; border-color:` + (this.layout.panel.background.borderColor != null ? this.layout.panel.background.borderColor : 'transparent') + `; border-width: ` + (this.layout.panel.background.borderWidth != null ? this.layout.panel.background.borderWidth : '1px') + `; } /*Panel fonts*/ .communityPanelBackground { color:` + (this.layout.panel.fonts.color != null ? this.layout.panel.fonts.color : 'white') + ` !important;` + (this.layout.panel.fonts.family != null ? ('font-family: ' + this.layout.panel.fonts.family + ' !important;') : '') + (this.layout.panel.fonts.size != null ? ('font-size: ' + this.layout.panel.fonts.size + ' !important;') : '') + ` } .communityPanelBackground .uk-h5:not(.ignoreCommunityPanelBackground) { color: ` + (this.layout.panel.title.color != null ? this.layout.panel.title.color : 'white') + ` !important;` + (this.layout.panel.title.family != null ? ('font-family: ' + this.layout.panel.title.family + ' !important;') : '') + (this.layout.panel.title.size != null ? ('font-size: ' + this.layout.panel.title.size + ' !important;') : '') + ` } .communityPanelBackground .uk-link:not(.ignoreCommunityPanelBackground), .communityPanelBackground a:not(.uk-button):not(.uk-button-text):not(.ignoreCommunityPanelBackground), .portal-card a { color: ` + (this.layout.panel.links.color != null ? this.layout.panel.links.color : 'white') + ` !important;` + (this.layout.panel.links.family != null ? ('font-family: ' + this.layout.panel.links.family + ' !important;') : '') + (this.layout.panel.links.size != null ? ('font-size: ' + this.layout.panel.links.size + ' !important;') : '') + (this.layout.panel.links.decoration != null ? ('text-decoration: ' + this.layout.panel.links.decoration + ';') : '') + ` } .communityPanelBackground .uk-link:not(.ignoreCommunityPanelBackground):hover, .communityPanelBackground a:not(.uk-button):not(.uk-button-text):not(.ignoreCommunityPanelBackground):hover, .portal-card a:hover { color: ` + (this.layout.panel.links.color != null ? this.layout.panel.links.color : `rgba(255, 255, 255, 0.8)`) + ` !important;` + ` } .uk-link, a:not(.uk-button), .uk-navbar-dropdown-nav > li > a, .uk-navbar-nav > li > a, .loginLink, .uk-tab > .uk-active > a, .uk-tab > * > a:focus, .uk-tab > * > a:hover { color:` + (this.layout.links.color != null ? this.layout.links.color : `var(--portal-main-color)`) + ` } .uk-link:hover, a:not(.uk-button):hover, .uk-navbar-dropdown-nav > li > a:focus, .uk-navbar-dropdown-nav > li > a:hover, .uk-navbar-nav > li > a:hover, .uk-navbar-nav > li > a:focus, .uk-navbar-nav > li > a:active, .uk-navbar-nav > li:hover > a, .uk-navbar-dropdown-nav > li.uk-active > a, .uk-tab > .uk-active > a, .uk-navbar-nav > li.uk-active > a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li.uk-active > a { color:` + (this.layout.links.onHover.color != null ? this.layout.links.onHover.color : `var(--portal-dark-color)`) + ` } .communityBorder { border-color: ` + (this.layout.box.borderColor != null ? this.layout.box.borderColor : `var(--portal-main-color)`) + `; border-style: ` + (this.layout.box.borderStyle != null ? this.layout.box.borderStyle : `solid`) + `; border-width: ` + (this.layout.box.borderWidth != null ? this.layout.box.borderWidth : `2px`) + `; border-radius: ` + (this.layout.box.borderRadius != null ? this.layout.box.borderRadius : `6px`) + `; } /*Panel Elements & cards*/ .communityPanelBackground .uk-card:not(.ignoreCommunityPanelBackground), .communityPanelBackground .uk-label:not(.ignoreCommunityPanelBackground) { background-color: ` + (this.layout.panel.panelElements.backgroundColor != null ? this.layout.panel.panelElements.backgroundColor : `rgba(255, 255, 255, 0.5)`) + `; border-color: ` + (this.layout.panel.panelElements.borderColor != null ? this.layout.panel.panelElements.borderColor : `rgba(255, 255, 255, 0.5)`) + `; } .communityPanelBackground .uk-card:not(.ignoreCommunityPanelBackground), .communityPanelBackground .uk-label:not(.ignoreCommunityPanelBackground) { color: ` + (this.layout.panel.panelElements.color != null ? this.layout.panel.panelElements.color : `rgba(255, 255, 255, 0.5)`) + `; } .uk-button:not(.uk-button-text), .portal-button { background-color:` + (this.layout.buttons.backgroundColor != null ? this.layout.buttons.backgroundColor : `var(--portal-main-color)`) + `; color: ` + (this.layout.buttons.color != null ? this.layout.buttons.color : `white`) + `; border-color: ` + (this.layout.buttons.borderColor != null ? this.layout.buttons.borderColor : `transparent`) + `; border-style: ` + (this.layout.buttons.borderStyle != null ? this.layout.buttons.borderStyle : `solid`) + `; border-width: ` + (this.layout.buttons.borderWidth != null ? this.layout.buttons.borderWidth : `1px`) + `; border-radius:` + (this.layout.buttons.borderRadius != null ? this.layout.buttons.borderRadius : `4px`) + `; } .uk-button:not(.uk-button-text):hover, .portal-button:hover { background-color: ` + (this.layout.buttons.onHover.backgroundColor != null ? this.layout.buttons.onHover.backgroundColor : `var(--portal-dark-color)`) + `; color: ` + (this.layout.buttons.onHover.color != null ? this.layout.buttons.onHover.color : `white`) + `; border-color: ` + (this.layout.buttons.onHover.color != null ? this.layout.buttons.onHover.color : `white`) + `; } /*Buttons*/ .communityPanelBackground .uk-button:not(.ignoreCommunityPanelBackground) { background-color: ` + (this.layout.panel.buttons.backgroundColor != null ? this.layout.panel.buttons.backgroundColor : `white`) + ` !important; color: ` + (this.layout.panel.buttons.color != null ? this.layout.panel.buttons.color : `var(--portal-main-color)`) + ` !important; border-color: ` + (this.layout.panel.buttons.borderColor != null ? this.layout.panel.buttons.borderColor : `transparent`) + ` !important; border-style: ` + (this.layout.panel.buttons.borderStyle != null ? this.layout.panel.buttons.borderStyle : `solid`) + ` !important; border-width: ` + (this.layout.panel.buttons.borderWidth != null ? this.layout.panel.buttons.borderWidth : `1px`) + ` !important; border-radius:` + (this.layout.panel.buttons.borderRadius != null ? this.layout.panel.buttons.borderRadius : `4px`) + ` !important; } .communityPanelBackground .uk-button:not(.ignoreCommunityPanelBackground):hover { background-color: ` + (this.layout.panel.buttons.onHover.backgroundColor != null ? this.layout.panel.buttons.onHover.backgroundColor : ` #eeeeee `) + ` !important; color: ` + (this.layout.panel.buttons.onHover.color != null ? this.layout.panel.buttons.onHover.color : ` var(--portal-main-color) `) + ` !important; border-color:` + (this.layout.panel.buttons.onHover.borderColor != null ? this.layout.panel.buttons.onHover.borderColor : `transparent`) + ` !important; } .uk-navbar-dropdown { background-color: white; color: #666; box-shadow: 0 5px 12px rgba(0, 0, 0, .15); /*border:var(--portal-main-color) 1px solid;*/ } .customTabs .uk-tab > .uk-active > a { border-color: var(--portal-main-color); } .customTabs .uk-tab > .uk-active > a { border-color: var(--portal-main-color); } .uk-tab > * > a:focus, .uk-tab > * > a:hover { border-color: var(--portal-dark-color); } ` appendCss(css); } }