From ef0373fc70df8b9dfa688a4fabc624bf93621bee Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Tue, 15 Sep 2020 13:54:41 +0000 Subject: [PATCH] [Usage Counts | Trunk]: Add fragments on home page to make slides bookmarkable. Add iframe for reports. Add footer --- src/app/about/about.component.html | 4 +- src/app/about/about.component.ts | 8 +- src/app/analytics/analytics.component.html | 5 +- src/app/app.component.html | 7 +- src/app/app.component.ts | 24 ++---- src/app/app.module.ts | 22 ++--- src/app/app.routing.ts | 31 +++---- src/app/home/home.component.css | 43 +++------- src/app/home/home.component.html | 6 +- src/app/home/home.component.ts | 25 ++++-- src/app/home/home.module.ts | 4 +- src/app/resources/resources.component.html | 22 ++--- src/app/resources/resources.component.ts | 8 +- src/app/services/layout.service.ts | 33 ++++++++ src/app/sushilite/sushilite.component.css | 9 +++ src/app/sushilite/sushilite.component.html | 6 ++ src/app/sushilite/sushilite.component.ts | 34 ++++++++ src/app/sushilite/sushilite.module.ts | 21 +++++ src/assets/usage-statistics-assets/home/1.svg | 2 +- .../usage-statistics-assets/home/3.3.svg | 2 +- src/environments/environment.beta.ts | 3 +- src/environments/environment.prod.ts | 3 +- src/environments/environment.ts | 3 +- src/styles.css | 80 +++++++++++++++++++ 24 files changed, 289 insertions(+), 116 deletions(-) create mode 100644 src/app/services/layout.service.ts create mode 100644 src/app/sushilite/sushilite.component.css create mode 100644 src/app/sushilite/sushilite.component.html create mode 100644 src/app/sushilite/sushilite.component.ts create mode 100644 src/app/sushilite/sushilite.module.ts diff --git a/src/app/about/about.component.html b/src/app/about/about.component.html index 10ccb4a..5423cc0 100644 --- a/src/app/about/about.component.html +++ b/src/app/about/about.component.html @@ -47,8 +47,8 @@

Architecture & Workflows

-
- +
+

Architecture functionalities

diff --git a/src/app/about/about.component.ts b/src/app/about/about.component.ts index a26d339..aad83c1 100644 --- a/src/app/about/about.component.ts +++ b/src/app/about/about.component.ts @@ -11,17 +11,11 @@ import {Title} from '@angular/platform-browser'; export class AboutComponent implements OnInit{ faqs: any[] = faqs; - constructor(private route: ActivatedRoute, - private title: Title) { + constructor(private title: Title) { } ngOnInit() { this.title.setTitle('OpenAIRE - UsageCounts | About'); - this.route.params.subscribe(params => { - if(params && params['section']) { - this.goTo(params['section']); - } - }); } goTo(id: string) { diff --git a/src/app/analytics/analytics.component.html b/src/app/analytics/analytics.component.html index 6a5c777..ce3b186 100644 --- a/src/app/analytics/analytics.component.html +++ b/src/app/analytics/analytics.component.html @@ -1,6 +1,4 @@ - -
-
+

Track Countries Usage Activity

@@ -108,4 +106,3 @@
-
diff --git a/src/app/app.component.html b/src/app/app.component.html index 7367eb0..0abcdce 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,10 +1,13 @@ -
-
+
+ OpenAIRE uses cookies in order to function properly.
Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing experience possible. diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 6847816..d208ee5 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,10 +1,9 @@ import {Component, OnInit} from '@angular/core'; import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu'; -import {ActivatedRoute, NavigationStart, Router} from '@angular/router'; import {EnvProperties} from './openaireLibrary/utils/properties/env-properties'; import {User} from './openaireLibrary/login/utils/helper.class'; import {properties} from '../environments/environment'; -import {BehaviorSubject} from 'rxjs'; +import {LayoutService} from './services/layout.service'; @Component({ selector: 'app', @@ -20,23 +19,16 @@ export class AppComponent implements OnInit { properties: EnvProperties = properties; showMenu: boolean = false; user: User; - isHome: BehaviorSubject = new BehaviorSubject(true); + isHome: boolean; - constructor(private route: ActivatedRoute, - private router: Router) { - this.router.events.subscribe(event => { - if (event instanceof NavigationStart) { - let path = event.url.split('?')[0]; - this.isHome.next(path === '/'); - } - }) - } + constructor(private layoutService: LayoutService) {} ngOnInit() { this.logInUrl = this.properties.loginUrl; this.logOutUrl = this.properties.logoutUrl; this.showMenu = true; - this.isHome.asObservable().subscribe(isHome => { + this.layoutService.isHome.subscribe(isHome => { + this.isHome = isHome this.buildMenu(isHome); }); } @@ -47,7 +39,7 @@ export class AppComponent implements OnInit { rootItem: new MenuItem("resources", "Resources", "", "/resources", false, [], null, {}), items: [ new MenuItem("provide", "OpenAIRE Provide", "", "/resources", false, [], null, {}), - new MenuItem("apis", "APIs and Reports", "", "/resources/apis", false, [], null, {}) + new MenuItem("apis", "APIs and Reports", "", "/resources", false, [], null, {}, null, 'apis') ] }, { @@ -61,9 +53,9 @@ export class AppComponent implements OnInit { { rootItem: new MenuItem("about", "About", "", "/about", false, [], null, {}), items: [ - new MenuItem("architecture", "Architecture", "", "/about/architecture", false, [], null, {}), + new MenuItem("architecture", "Architecture", "", "/about", false, [], null, {}, null, 'architecture'), /* - new MenuItem("faqs", "FAQs", "", "/about/faqs", false, [], null, {}) + new MenuItem("faqs", "FAQs", "", "/about", false, [], null, {}, null, 'faqs') */ ] } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 3096a72..b7f7f3d 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -8,18 +8,20 @@ import {SafeHtmlPipeModule} from "./openaireLibrary/utils/pipes/safeHTMLPipe.mod import {AppComponent} from "./app.component"; import {NgModule} from "@angular/core"; import {EnvironmentSpecificService} from "./openaireLibrary/utils/properties/environment-specific.service"; +import {BottomModule} from './openaireLibrary/sharedComponents/bottom.module'; @NgModule({ - imports: [ - AppRoutingModule, - BrowserModule, - BrowserAnimationsModule, - HttpClientModule, - NavigationBarModule, - CookieLawModule, - SafeHtmlPipeModule, - BrowserAnimationsModule - ], + imports: [ + AppRoutingModule, + BrowserModule, + BrowserAnimationsModule, + HttpClientModule, + NavigationBarModule, + CookieLawModule, + SafeHtmlPipeModule, + BrowserAnimationsModule, + BottomModule + ], declarations: [ AppComponent, ], diff --git a/src/app/app.routing.ts b/src/app/app.routing.ts index 6d8b55f..4d985ef 100644 --- a/src/app/app.routing.ts +++ b/src/app/app.routing.ts @@ -1,19 +1,18 @@ -import { NgModule} from '@angular/core'; +import {NgModule} from '@angular/core'; import {Routes, RouterModule, PreloadAllModules} from '@angular/router'; const appRoutes: Routes = [ { path: '', - loadChildren: './home/home.module#HomeModule' + loadChildren: './home/home.module#HomeModule', + data: { + isHome: true + } }, { path: 'resources', loadChildren: './resources/resources.module#ResourcesModule' }, - { - path: 'resources/:section', - loadChildren: './resources/resources.module#ResourcesModule' - }, { path: 'analytics', loadChildren: './analytics/analytics.module#AnalyticsModule' @@ -27,16 +26,20 @@ const appRoutes: Routes = [ loadChildren: './about/about.module#AboutModule' }, { - path: 'about/:section', - loadChildren: './about/about.module#AboutModule' + path: 'sushilite/:id', + loadChildren: './sushilite/sushilite.module#SushiliteModule' } - ]; +]; @NgModule({ - imports: [ RouterModule.forRoot(appRoutes, { + imports: [RouterModule.forRoot(appRoutes, { preloadingStrategy: PreloadAllModules, - scrollPositionRestoration: "top" - }) ], - exports: [ RouterModule ] + anchorScrolling: 'enabled', + onSameUrlNavigation: 'reload', + scrollPositionRestoration: 'enabled', + scrollOffset: [0, 100] + })], + exports: [RouterModule] }) -export class AppRoutingModule {} +export class AppRoutingModule { +} diff --git a/src/app/home/home.component.css b/src/app/home/home.component.css index fa00cca..7c641af 100644 --- a/src/app/home/home.component.css +++ b/src/app/home/home.component.css @@ -4,7 +4,7 @@ background-image: url("/assets/usage-statistics-assets/home/1.svg"); background-size: cover; background-repeat: no-repeat; - background-position: 0 -100px; + background-position: 20px -100px; } } @@ -16,43 +16,22 @@ padding: 25px 0 0 25px; } -/*.first > object { - top: -100px; - width: 1100px; - position: absolute; -} - -@media only screen and (min-width: 1200px) { - .first:before { - top: -100px; - width: 1100px; - height: 703px; - position: absolute; - z-index: 1; - background: transparent; - } -}*/ - -@media only screen and (min-width: 1200px) { +@media only screen and (min-width: 960px) { .third .first-column { background-image: url("/assets/usage-statistics-assets/home/3.1.svg"), url("/assets/usage-statistics-assets/home/3.2.svg"); background-repeat: no-repeat; background-size: contain, auto; background-position: top left, bottom center; font-size: 14px; - padding: 40px 0 40px 50px; + padding: 60px 0 40px 50px; position: relative; } - .third .first-column > .divider { + .third { background-image: url("/assets/usage-statistics-assets/home/3.3.svg"); background-repeat: no-repeat; - background-size: contain; - position: absolute; - height: 100%; - bottom: -10%; - right: calc(-12vw - 30px); - width: 100%; + background-size: auto; + background-position: 30% 0; } .third .second-column { @@ -70,9 +49,7 @@ background-size: auto; background-repeat: no-repeat; background-position: top left; - padding-top: 10px; - padding-left: 40px; - padding-right: 90px; + padding: 10px 30px 0 20px; } .third .third-column > div { @@ -80,6 +57,12 @@ } } +@media only screen and (min-width: 1200px) { + .third .third-column { + padding: 10px 90px 0 40px; + } +} + .features { background-image: url("/assets/usage-statistics-assets/home/4.svg"); diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index 1530bd0..82ffa52 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -29,7 +29,7 @@ standard SUSHI-Lite APIs.
-
+

Providers

    @@ -64,7 +64,6 @@
-
Repository managers, publishers
Register in OpenAIRE (via PROVIDE), share usage activity from your repository and receive cleaned and combined @@ -109,7 +108,8 @@
- + diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts index 0a0e153..5057655 100644 --- a/src/app/home/home.component.ts +++ b/src/app/home/home.component.ts @@ -1,6 +1,7 @@ -import {Component, OnInit} from '@angular/core'; -import {ActivatedRoute} from '@angular/router'; +import {Component, OnInit, ViewChild} from '@angular/core'; +import {ActivatedRoute, Router} from '@angular/router'; import {Title} from '@angular/platform-browser'; +import {FullPageSliderComponent} from '../openaireLibrary/utils/full-page-slider/full-page-slider.component'; @Component({ selector: 'home', @@ -10,15 +11,29 @@ import {Title} from '@angular/platform-browser'; export class HomeComponent implements OnInit{ public initSlide: number = 1; + public fragments: string[] = ['', 'why', 'who', 'features']; + @ViewChild("slider") + public slider: FullPageSliderComponent; constructor(private route: ActivatedRoute, + private router: Router, private title: Title) {} ngOnInit() { this.title.setTitle('OpenAIRE - UsageCounts'); - this.route.queryParams.subscribe(params => { - if(params['slide']) { - this.initSlide = params['slide']; + this.route.fragment.subscribe(name => { + if(name) { + let slide = this.fragments.findIndex(fragment => fragment === name) + 1; + if(slide > 0) { + this.initSlide = slide; + } + } + }); + this.slider.stateAsObservable.subscribe(state => { + if(state == 1) { + this.router.navigate(['/']); + } else { + this.router.navigate(['/'], {fragment: this.fragments[state - 1]}); } }); } diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts index 62a5e24..ad5b22e 100644 --- a/src/app/home/home.module.ts +++ b/src/app/home/home.module.ts @@ -3,14 +3,16 @@ import {HomeComponent} from './home.component'; import {CommonModule} from '@angular/common'; import {RouterModule} from '@angular/router'; import {FullPageSliderModule} from '../openaireLibrary/utils/full-page-slider/full-page-slider.module'; +import {BottomModule} from '../openaireLibrary/sharedComponents/bottom.module'; @NgModule({ imports: [ CommonModule, RouterModule.forChild([{ - path: '', component: HomeComponent + path: '', component: HomeComponent, }]), FullPageSliderModule, + BottomModule, ], declarations: [HomeComponent], exports: [HomeComponent] diff --git a/src/app/resources/resources.component.html b/src/app/resources/resources.component.html index 672f21f..a6528e3 100644 --- a/src/app/resources/resources.component.html +++ b/src/app/resources/resources.component.html @@ -65,40 +65,42 @@ CoP Release 4.

    -
  • AR-1 - Article Report 1. This report enables you to view the number of successful article download requests by +
  • AR-1 - Article Report 1. + This report enables you to view the number of successful article download requests by month and repository. There are filtering options to limit the results to a selected journal or repository. It can provide results for an individual month or over a number of months and can be output in JSON format.
  • -
  • IR-1 - Item Report 1. This report enables you to view the number of successful item download requests by +
  • IR-1 - Item Report 1. + This report enables you to view the number of successful item download requests by month and repository identifier. There are filtering options to limit the results to a selected item or repository identifier or item data type. It can provide results for an individual month or over a number of months and can be output in JSON format.
  • -
  • JR-1 - Journal Report 1. This report enables you to view the number of +
  • JR-1 - Journal Report 1. + This report enables you to view the number of successful full-text article requests by month and journal. There are filtering options to limit the results to a selected journal or item data type. It can provide results for an individual month or over a number of months and can be output in JSON format.
  • -
  • RR-1 - Repository Report 1. This report enables you to view the +
  • RR-1 - Repository Report 1. + This report enables you to view the number of successful item downloads for all repositories participating in the usage statistics service. There are filtering options to limit the results to a repository identifier or selected item type. It can provide results for an individual month or over a number of months and can be output in JSON format.
  • -
  • BR-1 - Book Report 1. This report enables you to view the number of successful book title requests by month and title. +
  • BR-1 - Book Report 1. + This report enables you to view the number of successful book title requests by month and title. There are filtering options to limit the results to a repository identifier or selected item identifier. It can provide results for an individual month or over a number of months and can be output in JSON format.
  • -
  • BR-2 - Book Report 2. This report enables you to download the number of successful book section requests by month +
  • BR-2 - Book Report 2. + This report enables you to download the number of successful book section requests by month and title. There are filtering options to limit the results to a repository identifier or selected item identifier. It can provide results for an individual month or over a number of months and can be output in JSON format.
-
- To download a report please visit - - http://services.openaire.eu/usagestats/sushilite/ -
diff --git a/src/app/resources/resources.component.ts b/src/app/resources/resources.component.ts index 7934f2d..d0b3ac0 100644 --- a/src/app/resources/resources.component.ts +++ b/src/app/resources/resources.component.ts @@ -9,17 +9,11 @@ import {ActivatedRoute} from '@angular/router'; }) export class ResourcesComponent implements OnInit{ - constructor(private title: Title, - private route: ActivatedRoute) { + constructor(private title: Title) { } ngOnInit() { this.title.setTitle('OpenAIRE - UsageCounts | Resources'); - this.route.params.subscribe(params => { - if(params && params['section']) { - this.goTo(params['section']); - } - }); } goTo(id: string) { diff --git a/src/app/services/layout.service.ts b/src/app/services/layout.service.ts new file mode 100644 index 0000000..6d4b4fd --- /dev/null +++ b/src/app/services/layout.service.ts @@ -0,0 +1,33 @@ +import {Injectable} from '@angular/core'; +import {ActivationStart, Router} from '@angular/router'; +import {BehaviorSubject, Observable} from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class LayoutService { + + private isHomeSubject: BehaviorSubject = new BehaviorSubject(false); + + constructor(private router: Router) { + this.router.events.subscribe(event => { + if (event instanceof ActivationStart) { + let data = event.snapshot.data; + if (data['isHome'] == undefined || + data['isHome'] === false) { + this.setIsHome(false); + } else { + this.setIsHome(true); + } + } + }); + } + + public setIsHome(isHome: boolean) { + this.isHomeSubject.next(isHome); + } + + public get isHome(): Observable { + return this.isHomeSubject.asObservable(); + } +} diff --git a/src/app/sushilite/sushilite.component.css b/src/app/sushilite/sushilite.component.css new file mode 100644 index 0000000..76cc3de --- /dev/null +++ b/src/app/sushilite/sushilite.component.css @@ -0,0 +1,9 @@ +.card { + background: #FFFFFF 0 0 no-repeat padding-box; + box-shadow: 0 3px 6px #00000029; + border-radius: 4px; + text-align: center; + position: relative; + padding: 30px 40px; + height: calc(100vh - 300px); +} diff --git a/src/app/sushilite/sushilite.component.html b/src/app/sushilite/sushilite.component.html new file mode 100644 index 0000000..4744eea --- /dev/null +++ b/src/app/sushilite/sushilite.component.html @@ -0,0 +1,6 @@ +
+

{{reportTitle}}

+
+ +
+
diff --git a/src/app/sushilite/sushilite.component.ts b/src/app/sushilite/sushilite.component.ts new file mode 100644 index 0000000..527d98d --- /dev/null +++ b/src/app/sushilite/sushilite.component.ts @@ -0,0 +1,34 @@ +import {Component, HostListener, OnInit} from '@angular/core'; +import {Title} from '@angular/platform-browser'; +import {ActivatedRoute} from '@angular/router'; +import {properties} from '../../environments/environment'; + +@Component({ + selector: 'sushilite', + templateUrl: 'sushilite.component.html', + styleUrls: ['sushilite.component.css'], +}) +export class SushiliteComponent implements OnInit{ + + public url: string; + public reportTitle: string; + public screenHeight: number; + + constructor(private title: Title, + private route: ActivatedRoute) { + this.getScreenSize(); + } + + ngOnInit() { + this.route.params.subscribe(params => { + this.reportTitle = params['id'] + ' Report'; + this.title.setTitle('OpenAIRE - UsageCounts | ' + this.reportTitle); + this.url = properties.sushiliteURL + params['id']; + }); + } + + @HostListener('window:resize', ['$event']) + getScreenSize(event?) { + this.screenHeight = window.innerHeight - 100; + } +} diff --git a/src/app/sushilite/sushilite.module.ts b/src/app/sushilite/sushilite.module.ts new file mode 100644 index 0000000..454fdf6 --- /dev/null +++ b/src/app/sushilite/sushilite.module.ts @@ -0,0 +1,21 @@ +import {NgModule} from "@angular/core"; +import {CommonModule} from "@angular/common"; +import {RouterModule} from "@angular/router"; + +import {SushiliteComponent} from "./sushilite.component"; +import {IFrameModule} from '../openaireLibrary/utils/iframe.module'; + +@NgModule({ + imports: [ + CommonModule, + RouterModule.forChild([{ + path: '', component: SushiliteComponent + }]), + IFrameModule + ], + declarations: [SushiliteComponent], + exports: [SushiliteComponent] +}) +export class SushiliteModule { + +} diff --git a/src/assets/usage-statistics-assets/home/1.svg b/src/assets/usage-statistics-assets/home/1.svg index 17af146..e175027 100644 --- a/src/assets/usage-statistics-assets/home/1.svg +++ b/src/assets/usage-statistics-assets/home/1.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/assets/usage-statistics-assets/home/3.3.svg b/src/assets/usage-statistics-assets/home/3.3.svg index 5872e21..1f3eb4b 100644 --- a/src/assets/usage-statistics-assets/home/3.3.svg +++ b/src/assets/usage-statistics-assets/home/3.3.svg @@ -1,3 +1,3 @@ - + diff --git a/src/environments/environment.beta.ts b/src/environments/environment.beta.ts index 39b052e..ccd659f 100644 --- a/src/environments/environment.beta.ts +++ b/src/environments/environment.beta.ts @@ -12,5 +12,6 @@ export let properties: EnvProperties = { cacheUrl: "https://demo.openaire.eu/cache/get?url=", adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-admin-tools/", reCaptchaSiteKey: "6LezhVIUAAAAAOb4nHDd87sckLhMXFDcHuKyS76P", - admins: ["rcd-helpdesk@openaire.eu"] + admins: ["rcd-helpdesk@openaire.eu"], + sushiliteURL: 'http://services.openaire.eu/usagestats/sushilite/' }; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index a3925c6..39980dd 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -12,5 +12,6 @@ export let properties: EnvProperties = { cacheUrl:"https://explore.openaire.eu/cache/get?url=", adminToolsAPIURL:"https://services.openaire.eu/uoa-admin-tools/", reCaptchaSiteKey: "6LezhVIUAAAAAOb4nHDd87sckLhMXFDcHuKyS76P", - admins: ["rcd-helpdesk@openaire.eu"] + admins: ["rcd-helpdesk@openaire.eu"], + sushiliteURL: 'http://services.openaire.eu/usagestats/sushilite/' }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index f608ca7..738f54c 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -17,5 +17,6 @@ export let properties: EnvProperties = { cacheUrl: "http://mpagasas.di.uoa.gr:3200/get?url=", adminToolsAPIURL: 'http://duffy.di.uoa.gr:8080/uoa-admin-tools/', reCaptchaSiteKey: '6LcVtFIUAAAAAB2ac6xYivHxYXKoUvYRPi-6_rLu', - admins: ['kostis30fylloy@gmail.com'] + admins: ['kostis30fylloy@gmail.com'], + sushiliteURL: 'http://scoobydoo.di.uoa.gr/static/sushilite/' }; diff --git a/src/styles.css b/src/styles.css index 5821c5c..02ca03c 100644 --- a/src/styles.css +++ b/src/styles.css @@ -154,3 +154,83 @@ contact .uk-text-danger { color: #B50000 !important; font-size: 12px; } + +.footer, +.footer .uk-section-primary { + background-color: #ffffff; + color: #000000 !important; + font-family: "Open Sans", sans-serif !important; + font-size: 14px !important; + font-weight: 400!important; +} + +.footer svg .stroke_line { + stroke: #000000 !important; +} + +.footer svg .fill_text { + fill: #000000 !important; +} + +.footer .uk-h6:not(.ignoreFooter), +.footer .uk-h5:not(.ignoreFooter), +.footer .uk-h4:not(.ignoreFooter), +.footer .uk-h3:not(.ignoreFooter), +.footer .uk-h2:not(.ignoreFooter), +.footer .uk-h1:not(.ignoreFooter) { + color: #000000 !important; +} + +.footer .uk-link:not(.ignoreFooter), +.footer a:not(.uk-button):not(.uk-button-text):not(.ignoreFooter) { + color: #000000 !important; + font-family: "Open Sans", sans-serif !important; + font-size: 14px !important; +} + +.footer .uk-icon-button { + border-color: rgba(0, 0, 0, 0.5); +} + +.footer .uk-totop { + background-color: #ffffff; +} + +.footer .uk-totop svg { + color: rgba(0, 0, 0, 0.5); +} + +.footer .uk-totop:hover svg { + color: black; +} + +.footer .uk-link:not(.ignoreFooter):hover, +.footer a:not(.uk-button):not(.uk-button-text):not(.ignoreFooter):hover { + color: #000000 !important; +} + + +.footer .uk-label:not(.ignoreFooter) a { + border-color: #000000; + border-bottom: 1px solid; +} + +.footer .uk-label:not(.ignoreFooter) a:hover { + border-color: rgba(0, 0, 0, 0.5); +} + + +.footer .uk-button:not(.ignoreFooter) { + background-color: #ffffff !important; + color: black !important; + border-color: #ffffff !important; + border-style: solid !important; + border-width: 1px !important; +} + +.footer .uk-button:not(.ignoreFooter):hover { + background-color: #eeeeee !important; + /*color: var(--portal-main-color) !important;*/ + color: black !important; + border-color: #eeeeee !important; +}