Redesign of landing page, sign in interface, sidebar, navbar, dashboard (still in progress)

This commit is contained in:
apapachristou 2020-06-26 12:08:51 +03:00
parent ddd0b60d37
commit 7cf5ddfebe
52 changed files with 3408 additions and 515 deletions

View File

@ -154,6 +154,13 @@ const appRoutes: Routes = [
breadcrumb: true
}
},
{
path: 'guest',
loadChildren: () => import('./ui/guest/guest.module').then(m => m.GuestModule),
data: {
breadcrumb: true
}
},
{
path: 'splash',
loadChildren: () => import('./ui/splash/splash.module').then(m => m.SplashModule),

View File

@ -1,42 +1,17 @@
<div class="wrapper" *ngIf="!onlySplash">
<div class="sidebar sidebar-shadow" data-color="danger" data-background-color="white"
data-image="./assets/images/logan-troxell-9187-unsplash.jpg">
<app-sidebar></app-sidebar>
<div class="sidebar-background" style="background-image: url(./assets/images/logan-troxell-9187-unsplash.jpg)">
</div>
</div>
<div class="main-panel">
<app-navbar></app-navbar>
<div>
<!-- <app-breadcrumb *ngIf="this.isAuthenticated() && (hasBreadCrumb | async)"></app-breadcrumb> -->
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
</div>
</div>
<div class="wrapper" *ngIf="isAuthenticated()">
<app-navbar (sidebarToggled)="sidenav.toggle(); toggleNavbar($event);"></app-navbar>
<mat-sidenav-container fullscreen class="main-container">
<mat-sidenav #sidenav mode="side" opened class="sidenav" [fixedInViewport]="true" [fixedTopGap]="80">
<app-sidebar></app-sidebar>
</mat-sidenav>
<mat-sidenav-content>
<div>
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
</div>
</mat-sidenav-content>
</mat-sidenav-container>
</div>
<app-notification *ngIf="!onlySplash"></app-notification>
<router-outlet *ngIf="onlySplash"></router-outlet>
<!-- <app-navigation class="fixed"></app-navigation>
<div class="container-fluid main-container">
<div class="row" *ngIf="helpContentEnabled">
<app-help-content position="top"></app-help-content>
</div>
<div class="row">
<div class="col-md-2">
<app-help-content position="left" *ngIf="helpContentEnabled"></app-help-content>
</div>
<div class="col-md-8">
<app-breadcrumb *ngIf="this.isAuthenticated() && (hasBreadCrumb | async)"></app-breadcrumb>
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
</div>
<div class="col-md-2">
<app-help-content position="right" *ngIf="helpContentEnabled"></app-help-content>
</div>
</div>
<div class="row" *ngIf="helpContentEnabled">
<app-help-content position="bottom"></app-help-content>
</div>
<div class="wrapper" *ngIf="!isAuthenticated()">
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
</div>
<app-notification></app-notification> -->
<app-notification></app-notification>

View File

@ -6,9 +6,26 @@
width: 100%;
}
// .main-container {
// margin-top: 64px;
// padding-top: 10px;
// }
.main-container {
margin-top: 64px;
padding-top: 10px;
top: 80px;
left: 0;
right: 0;
}
.sidenav {
display: flex;
align-items: center;
justify-content: center;
width: 260px;
background: #ffffff 0% 0% no-repeat padding-box;
box-shadow: 0px 0px 16px 2px #00000029;
border-right-width: 0px;
opacity: 1;
}
.sidebar-shadow {

View File

@ -32,7 +32,6 @@ export class AppComponent implements OnInit {
sideNavOpen = false;
helpContentEnabled: boolean;
private statusChangeSubscription: Subscription;
onlySplash = false;
constructor(
private router: Router,
@ -61,18 +60,17 @@ export class AppComponent implements OnInit {
}
ngOnInit() {
if (this.location.path() === '') {
if (!this.configurationService.useSplash) {
this.onlySplash = false;
if (this.location.path() === '' || this.location.path() === '/home') {
if (this.isAuthenticated()) {
this.router.navigate(['/reload']).then(() => this.router.navigate(['/home']));
} else {
this.onlySplash = true;
this.router.navigate(['/reload']).then(() => this.router.navigate(['/splash']));
} else if (!this.isAuthenticated()) {
this.router.navigate(['/reload']).then(() => this.router.navigate(['/guest']));
}
} else if (this.location.path() === '/splash') {
this.onlySplash = true;
} else {
this.onlySplash = false;
// if (!this.configurationService.useSplash) {
// this.router.navigate(['/reload']).then(() => this.router.navigate(['/home']));
// } else {
// this.router.navigate(['/reload']).then(() => this.router.navigate(['/splash']));
// }
}
if (!this.cookieService.check("cookiesConsent")) {
this.cookieService.set("cookiesConsent", "false", 356);
@ -171,5 +169,9 @@ export class AppComponent implements OnInit {
this.authentication.current() && this.authentication.current().culture ? this.cultureService.cultureSelected(this.authentication.current().culture) : this.cultureService.cultureSelected(this.configurationService.defaultCulture);
this.authentication.current() && this.authentication.current().language ? this.language.changeLanguage(this.authentication.current().language) : this.language.changeLanguage('en');
}
toggleNavbar(event) {
document.getElementById('hamburger').classList.toggle("change");
}
}

View File

@ -31,6 +31,7 @@ import { TranslateServerLoader } from './core/services/language/server.loader';
import { BaseHttpService } from './core/services/http/base-http.service';
import { ConfigurationService } from './core/services/configuration/configuration.service';
import { Oauth2DialogModule } from './ui/misc/oauth2-dialog/oauth2-dialog.module';
import { GuestModule } from './ui/guest/guest.module';
// AoT requires an exported function for factories
export function HttpLoaderFactory(http: HttpClient, appConfig: ConfigurationService) {
@ -98,6 +99,7 @@ const cookieConfig: NgcCookieConsentConfig = {
DatasetCreateWizardModule,
NavbarModule,
SidebarModule,
GuestModule,
NgcCookieConsentModule.forRoot(cookieConfig),
Oauth2DialogModule
],

View File

@ -3,22 +3,22 @@
<div class="card login-card">
<div class="container card-header">
<div *ngIf="hasGoogleOauth()" class="row social-btns">
<div class="col">
<div class="col-auto">
<button mat-icon-button id="googleSignInButton" class="login-social-button">
<i class="fa fa-google"></i>
</button>
</div>
<div *ngIf="hasLinkedInOauth()" class="col">
<div *ngIf="hasLinkedInOauth()" class="col-auto">
<button mat-icon-button class="login-social-button">
<i class="fa fa-linkedin" (click)="linkedInLogin()"></i>
</button>
</div>
<div *ngIf="hasFacebookOauth()" class="col">
<div *ngIf="hasFacebookOauth()" class="col-auto">
<button mat-icon-button (click)="facebookLogin()" class="login-social-button">
<i class="fa fa-facebook-square"></i>
</button>
</div>
<div *ngIf="hasTwitterOauth()" class="col">
<div *ngIf="hasTwitterOauth()" class="col-auto">
<button mat-icon-button (click)="twitterLogin()" class="login-social-button">
<i class="fa fa-twitter"></i>
</button>

View File

@ -1,4 +1,104 @@
<div class="header-image">
<div class="main-content dashboard-main-container" [class.non-auth-main-container]="!this.isAuthenticated()">
<div *ngIf="this.isAuthenticated()" class="container-fluid">
<div *ngIf="dashboardStatisticsData?.totalDataManagementPlanCount === 0
&& dashboardStatisticsData?.totalDataSetCount === 0
&& dashboardStatisticsData?.totalGrantCount === 0
&& dashboardStatisticsData?.totalOrganisationCount === 0">
<div class="main-content">
<div class="col-md-8">
<div class="card" [style.display]="isVisible ? 'block' : 'none'">
<a class="col-auto d-flex" (click)="closeCard()"><span class="ml-auto pt-3 material-icons clear-icon">clear</span></a>
<p class="card-title mb-0">What is a DMP in ARGOS</p>
<p class="card-content mb-0">A Data Management Plan (DMP) is a living document describing the datasets that are generated and/ or re-used
during and after a research lifetime. DMPs aim to provide researchers with essential information to re-produce,
re-distribute and re-purpose research results thus assuring for their validity and exploitation.</p>
<p class="card-content pt-3 mb-0">
New with DMPs? Visit <a><u>OpenAIREs Guide for Researchers</u></a> to learn more about how to create one!
</p>
<div class="d-flex">
<button type="button" class="col-auto align-self-center normal-btn">Start your first DMP</button>
<img class="col-auto ml-auto" src="../../assets/img/laptop.png" width="116" height="139">
</div>
</div>
</div>
<div class="col-md-4">
<div class="personal-usage">Personal usage</div>
<div class="counter-zero">0</div>
<a href="#" class="link">DMP's</a>
<div class="counter-zero">0</div>
<a href="#" class="link">Dataset Descriptions</a>
<div class="counter-zero">0</div>
<a href="#" class="link-disabled">Grants</a>
<div class="counter-zero">0</div>
<a href="#" class="link-disabled">Related organizations</a>
</div>
</div>
</div>
<div *ngIf="dashboardStatisticsData?.totalDataManagementPlanCount !== 0
|| dashboardStatisticsData?.totalDataSetCount !== 0
|| dashboardStatisticsData?.totalGrantCount !== 0
|| dashboardStatisticsData?.totalOrganisationCount !== 0">
<div class="main-content">
<div class="col">
<div class="card" [style.display]="isVisible ? 'block' : 'none'">
<a class="col-auto d-flex" (click)="closeCard()"><span
class="ml-auto pt-3 material-icons clear-icon">clear</span></a>
<p class="card-content mb-0 pt-0">A DMP in Argos consists of key information about research,
such as purpose,
objectives and researchers involved, but also about documentation of research datasets,
namely <b> Dataset
Descriptions</b>, that highlight the steps followed and the means used across data
management activities.</p>
<div class="d-flex pt-4 pb-4 mt-3 mb-3">
<button type="button" class="col-auto align-self-center yellow-btn">Add Dataset
Description</button>
</div>
</div>
<div class="latest-activity-title">Latest activity</div>
<mat-tab-group mat-align-tabs="start" class="remove-border-bottom">
<!-- +counter -->
<mat-tab label="All">
<div class="col-auto"><input type="text" class="d-flex ml-auto" placeholder="&nbsp;&nbsp;&#xf002;&nbsp;&nbsp;Search"></div>
<app-recent-edited-activity></app-recent-edited-activity>
</mat-tab>
<mat-tab label="Drafts"></mat-tab>
<mat-tab label="DMPs"></mat-tab>
<mat-tab label="Dataset Descriptions"></mat-tab>
</mat-tab-group>
<div class="d-flex justify-content-center">
<button type="button" class="btn-load-more">Load more</button>
</div>
</div>
<div class="col-auto">
<div class="personal-usage">Personal usage</div>
<div [ngClass]="{'counter': dashboardStatisticsData?.totalDataManagementPlanCount != 0, 'counter-zero': dashboardStatisticsData?.totalDataManagementPlanCount == 0}">
{{dashboardStatisticsData?.totalDataManagementPlanCount}}</div>
<a [routerLink]="['/plans']" class="link">DMP's</a>
<div [ngClass]="{'counter': dashboardStatisticsData?.totalDataSetCount != 0, 'counter-zero': dashboardStatisticsData?.totalDataSetCount == 0}">
{{dashboardStatisticsData?.totalDataSetCount}}</div>
<a [routerLink]="['/datasets']" class="link">Dataset Descriptions</a>
<div [ngClass]="{'counter': dashboardStatisticsData?.totalGrantCount != 0, 'counter-zero': dashboardStatisticsData?.totalGrantCount == 0}">
{{dashboardStatisticsData?.totalGrantCount}}</div>
<a href="#" class="link-disabled">Grants</a>
<div [ngClass]="{'counter': dashboardStatisticsData?.totalOrganisationCount != 0, 'counter-zero': dashboardStatisticsData?.totalOrganisationCount == 0}">
{{dashboardStatisticsData?.totalOrganisationCount}}</div>
<a href="#" class="link-disabled">Related organizations</a>
</div>
</div>
</div>
</div>
</div>
<!-- <div class="header-image">
<div class="header-text-container">
<h3>{{ 'ABOUT.WELCOME' | translate }}</h3>
<h4>{{ 'ABOUT.WELCOME-MESSAGE' | translate }}</h4>
@ -25,7 +125,6 @@
<app-info-counter [title]="'DASHBOARD.MY-DATASETS'" [subtitle]="dashboardStatisticsData?.totalDataSetCount" routerLink='/datasets' buttonRedirectLink="/datasets/new" icon="library_books"></app-info-counter>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<!-- <app-info-counter [title]="'DASHBOARD.MY-GRANTS'" [subtitle]="dashboardStatisticsData?.totalGrantCount" routerLink='/grants' buttonRedirectLink="/grants/new" icon="work_outline"></app-info-counter> -->
<app-info-counter [title]="'DASHBOARD.MY-GRANTS'" [subtitle]="dashboardStatisticsData?.totalGrantCount" icon="work_outline"></app-info-counter>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
@ -53,7 +152,6 @@
<app-info-counter [title]="'DASHBOARD.DATASETS'" [subtitle]="dashboardStatisticsData?.totalDataSetCount" routerLink='/explore' buttonRedirectLink="/datasets/new" icon="library_books"></app-info-counter>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<!-- <app-info-counter [title]="'DASHBOARD.GRANTS'" [subtitle]="dashboardStatisticsData?.totalGrantCount" buttonRedirectLink="/grants/new" icon="work_outline"></app-info-counter> -->
<app-info-counter [title]="'DASHBOARD.GRANTS'" [subtitle]="dashboardStatisticsData?.totalGrantCount" icon="work_outline"></app-info-counter>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
@ -100,4 +198,4 @@
</div>
</div>
</div>
</div>
</div> -->

View File

@ -1,115 +1,456 @@
.header-image {
background: url("/assets/images/new-dashboard-bg.png") no-repeat;
background-size: cover;
margin-top: 70px;
min-height: 20em;
position: relative;
.main-content {
background-color: #f5f5f5;
padding-top: 3.68rem;
padding-bottom: 10rem;
// padding-left: 3.31rem;
padding-left: 1rem;
margin: 0;
display: flex;
flex-grow: 1;
}
.header-text-container {
background: rgba(255, 255, 255, 0.7);
position: absolute;
bottom: 0px;
padding-left: 5em;
padding-right: 10em;
padding-top: 2em;
padding-bottom: 2em;
.card {
background: #ffffff 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #00000029;
border-radius: 4px;
width: 712px;
margin-bottom: 3.75rem;
/* height: 407px; */
opacity: 1;
}
.dashboard-main-container {
margin-top: 0px;
.card-title {
text-align: left;
font: Bold 20px/30px Roboto;
letter-spacing: 0px;
color: #212121;
padding-left: 40px;
/* padding-top: 40px; */
padding-right: 55px;
opacity: 1;
}
.non-auth-main-container {
padding: 0;
.card-content {
text-align: left;
font: Light 16px/26px Roboto;
letter-spacing: 0px;
color: #212121;
padding-left: 40px;
padding-top: 36px;
padding-right: 55px;
opacity: 1;
}
.non-auth-stats {
background-color: rgba(255, 255, 255, 0.5);
.clear-icon {
cursor: pointer;
}
.non-auth-title-container {
margin-top: 3em;
.normal-btn {
min-width: 162px;
max-width: 256px;
height: 40px;
cursor: pointer;
background: #129d99 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #1e202029;
border-radius: 30px;
border: none;
color: #ffffff;
opacity: 1;
line-height: 1;
font-size: 0.87rem;
padding: 0.62rem 1.87rem;
margin-left: 40px;
}
.dashboard {
.card {
padding: 25px 20px 20px 20px;
display: flex;
flex-direction: column;
align-items: center;
.yellow-btn {
min-width: 162px;
max-width: 256px;
height: 40px;
cursor: pointer;
background: #f7dd72 0% 0% no-repeat padding-box;
border-radius: 30px;
opacity: 1;
border: none;
color: #000000;
opacity: 1;
line-height: 1;
font-size: 0.87rem;
padding: 0.62rem 1.87rem;
margin-left: 40px;
}
.personal-usage {
text-align: left;
font-weight: 300;
font-family: "Roboto", sans-serif;
font-size: 1.25rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.6;
}
.counter-zero {
text-align: left;
font: Bold 48px/30px Roboto;
letter-spacing: 0px;
color: #212121;
opacity: 0.36;
padding-top: 2rem;
padding-bottom: 0.5rem;
}
.counter {
text-align: left;
font: Bold 48px/30px Roboto;
letter-spacing: 0px;
color: #212121;
opacity: 0.85;
padding-top: 2rem;
padding-bottom: 0.5rem;
}
.link {
text-align: left;
text-decoration: underline;
font-weight: 300;
font-family: "Roboto", sans-serif;
font-size: 1rem;
letter-spacing: 0px;
color: #1eb5b4;
opacity: 1;
}
.link-disabled {
text-align: left;
font-weight: 300;
font-family: "Roboto", sans-serif;
font-size: 1rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.6;
}
.latest-activity-title {
text-align: left;
font-weight: 300;
font-family: "Roboto", sans-serif;
font-size: 1.25rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.6;
padding-bottom: 1.2rem;
}
.dmp-card,
.dataset-card {
min-width: 712px;
/* min-height: 308px; */
background: #ffffff 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #0000001a;
border-radius: 4px;
opacity: 1;
margin-top: 2.43rem;
margin-bottom: 1rem;
}
.remove-border-bottom ::ng-deep .mat-tab-header {
border-bottom: none;
}
input[type="text"] {
background: #fafafa 0% 0% no-repeat padding-box;
border: 1px solid #d1d1d1;
border-radius: 4px;
opacity: 1;
width: 347px;
height: 56px;
font-family: Arial, FontAwesome;
padding-left: 15px;
}
.edited-date {
text-align: left;
font-weight: 300;
font-family: "Roboto", sans-serif;
line-height: 2.4;
letter-spacing: 0px;
color: #212121;
opacity: 0.6;
}
.dmp-label {
background: #129d99 0% 0% no-repeat padding-box;
border-radius: 4px 0px;
opacity: 1;
width: 67px;
height: 37px;
color: #ffffff;
line-height: 2.4;
opacity: 0.75;
}
.dataset-label {
width: 158px;
height: 37px;
background: #f7dd72 0% 0% no-repeat padding-box;
border-radius: 4px 0px;
text-align: left;
line-height: 2.8;
font-size: 0.875rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.75;
}
.dmp-title,
.dataset-title {
text-align: left;
font-weight: 500;
font-family: "Roboto", sans-serif;
font-size: 1rem;
opacity: 0.81;
padding-top: 0.75rem;
padding-bottom: 0.55rem;
color: #212121;
}
.dataset-subtitle,
.dmp-subtitle {
display: flex;
flex-direction: row;
text-align: left;
font-weight: 400;
font-family: "Roboto", sans-serif;
font-size: 0.875rem;
opacity: 1;
align-items: center;
color: #848484;
}
.dmp-title-draft {
text-align: left;
font-weight: 500;
font-family: "Roboto", sans-serif;
font-size: 1rem;
opacity: 0.81;
padding-top: 0.75rem;
padding-bottom: 0.55rem;
color: #f16868;
}
.icon-align {
display: inline-flex;
vertical-align: middle;
padding-bottom: 0.4rem;
}
.dataset-card-actions,
.dmp-card-actions {
display: flex;
flex-direction: row;
border-top: 1px solid #dbdbdb;
line-height: 4;
color: #848484;
}
.dataset-card-actions a,
.dmp-card-actions a {
color: #848484 !important;
text-decoration: none !important;
}
.dataset-card-actions a:hover,
.dmp-card-actions a:hover {
color: #129d99 !important;
}
.dmp-dataset-descriptions-title {
color: #000000;
opacity: 0.6;
padding-top: 1.5rem;
padding-bottom: 0.8rem;
}
.dmp-dataset-descriptions-name {
color: #000000;
opacity: 0.6;
font-weight: 700;
}
.show-more {
color: black !important;
}
.show-more:hover {
color: #129d99 !important;
}
.btn-load-more {
border: 2px solid #212121;
border-radius: 30px;
opacity: 1;
width: 132px;
height: 40px;
margin-top: 4.125rem;
}
.btn-load-more:hover {
background-color: black;
color: white;
}
.draft {
color: #f16868;
}
::ng-deep .mat-tab-group.mat-primary .mat-ink-bar,
.mat-tab-nav-bar.mat-primary .mat-ink-bar {
background: #129d99;
height: 5px;
}
::ng-deep .mat-tab-label {
min-width: auto !important;
background-color: transparent;
}
::ng-deep .mat-tab-label.mat-tab-label-active {
min-width: auto !important;
background-color: transparent;
font-weight: 700;
}
/* ::ng-deep .mat-tab-group {
height: 100%;
}
.card h6,
p {
color: #999;
::ng-deep .mat-tab-body-wrapper {
flex-grow: 1;
}
.icon {
margin-top: 20px;
width: 130px;
height: 130px;
border: 1px solid #e5e5e5;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
::ng-deep .mat-tab-body {
display: flex !important;
flex-direction: column;
}
.icon i {
font-size: 55px;
color: #e91e63;
}
::ng-deep .mat-tab-body-content {
display: flex;
flex-direction: column;
flex-grow: 1;
} */
.card-title {
margin-top: 30px;
margin-bottom: 3px;
}
// .header-image {
// background: url("/assets/images/new-dashboard-bg.png") no-repeat;
// background-size: cover;
// margin-top: 70px;
// min-height: 20em;
// position: relative;
// }
.card-description {
margin-bottom: 20px;
}
// .header-text-container {
// background: rgba(255, 255, 255, 0.7);
// position: absolute;
// bottom: 0px;
// padding-left: 5em;
// padding-right: 10em;
// padding-top: 2em;
// padding-bottom: 2em;
// }
.card-dataset {
display: flex;
flex-direction: column;
padding: 20px;
position: relative;
margin-top: 40px;
}
// .dashboard-main-container {
// margin-top: 0px;
// }
.card {
box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);
border-radius: 6px;
color: rgba(0, 0, 0, 0.87);
background: #fff;
}
// .non-auth-main-container {
// padding: 0;
// }
.card-raised {
box-shadow: 0 10px 30px -12px rgba(0, 0, 0, 0.42), 0 4px 25px 0px rgba(0, 0, 0, 0.12),
0 8px 10px -5px rgba(0, 0, 0, 0.2);
}
// .non-auth-stats {
// background-color: rgba(255, 255, 255, 0.5);
// }
.full-width {
width: 100%;
}
}
// .non-auth-title-container {
// margin-top: 3em;
// }
.info {
display: flex;
flex-wrap: nowrap;
}
// .dashboard {
// .card {
// padding: 25px 20px 20px 20px;
// display: flex;
// flex-direction: column;
// align-items: center;
// }
.subtitle {
margin-bottom: 0px !important;
}
// .card h6,
// p {
// color: #999;
// }
.view-all {
margin-left: auto;
margin-bottom: 0px !important;
color: #6aa4d9;
}
// .icon {
// margin-top: 20px;
// width: 130px;
// height: 130px;
// border: 1px solid #e5e5e5;
// border-radius: 50%;
// display: flex;
// justify-content: center;
// align-items: center;
// }
.view-all:hover {
color: rgb(46, 117, 182) !important;
}
// .icon i {
// font-size: 55px;
// color: #e91e63;
// }
// .card-title {
// margin-top: 30px;
// margin-bottom: 3px;
// }
// .card-description {
// margin-bottom: 20px;
// }
// .card-dataset {
// display: flex;
// flex-direction: column;
// padding: 20px;
// position: relative;
// margin-top: 40px;
// }
// .card {
// box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);
// border-radius: 6px;
// color: rgba(0, 0, 0, 0.87);
// background: #fff;
// }
// .card-raised {
// box-shadow: 0 10px 30px -12px rgba(0, 0, 0, 0.42), 0 4px 25px 0px rgba(0, 0, 0, 0.12),
// 0 8px 10px -5px rgba(0, 0, 0, 0.2);
// }
// .full-width {
// width: 100%;
// }
// }
// .info {
// display: flex;
// flex-wrap: nowrap;
// }
// .subtitle {
// margin-bottom: 0px !important;
// }
// .view-all {
// margin-left: auto;
// margin-bottom: 0px !important;
// color: #6aa4d9;
// }
// .view-all:hover {
// color: rgb(46, 117, 182) !important;
// }

View File

@ -38,6 +38,8 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC
breadCrumbs: Observable<BreadcrumbItem[]>;
public isVisible = true
public userInfo: any;
datasetActivities: any[];
grantActivities: any[];
@ -181,6 +183,10 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC
this.router.navigate(['/datasets/publicEdit/' + dataset.id]);
}
public closeCard(): void {
this.isVisible = false;
}
// viewAllPublicDmpsClicked() {
// this.router.navigate(['/explore-plans']);
// }

View File

@ -14,6 +14,8 @@ import { RecentVisitedActivityComponent } from '@app/ui/dashboard/recent-visited
import { WizardComponent } from '@app/ui/dashboard/wizard/wizard.component';
import { CommonUiModule } from '@common/ui/common-ui.module';
import { ConfirmationDialogModule } from '@common/modules/confirmation-dialog/confirmation-dialog.module';
import { GuestModule } from '../guest/guest.module';
import { GuestComponent } from '../guest/guest.component';
@NgModule({
imports: [

View File

@ -1,4 +1,178 @@
th {
.latest-activity-title {
text-align: left;
font-weight: 300;
font-family: "Roboto", sans-serif;
font-size: 1.25rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.6;
padding-bottom: 1.2rem;
}
.dmp-card,
.dataset-card {
min-width: 712px;
/* min-height: 308px; */
background: #ffffff 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #0000001a;
border-radius: 4px;
opacity: 1;
margin-top: 2.43rem;
margin-bottom: 1rem;
}
.remove-border-bottom ::ng-deep .mat-tab-header {
border-bottom: none;
}
input[type="text"] {
background: #fafafa 0% 0% no-repeat padding-box;
border: 1px solid #d1d1d1;
border-radius: 4px;
opacity: 1;
width: 347px;
height: 56px;
font-family: Arial, FontAwesome;
padding-left: 15px;
}
.edited-date {
text-align: left;
font-weight: 300;
font-family: "Roboto", sans-serif;
line-height: 2.4;
letter-spacing: 0px;
color: #212121;
opacity: 0.6;
}
.dmp-label {
background: #129d99 0% 0% no-repeat padding-box;
border-radius: 4px 0px;
opacity: 1;
width: 67px;
height: 37px;
color: #ffffff;
line-height: 2.4;
opacity: 0.75;
}
.dataset-label {
width: 158px;
height: 37px;
background: #f7dd72 0% 0% no-repeat padding-box;
border-radius: 4px 0px;
text-align: left;
line-height: 2.8;
font-size: 0.875rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.75;
}
.dmp-title,
.dataset-title {
text-align: left;
font-weight: 500;
font-family: "Roboto", sans-serif;
font-size: 1rem;
opacity: 0.81;
padding-top: 0.75rem;
padding-bottom: 0.55rem;
color: #212121;
}
.dataset-subtitle,
.dmp-subtitle {
display: flex;
flex-direction: row;
text-align: left;
font-weight: 400;
font-family: "Roboto", sans-serif;
font-size: 0.875rem;
opacity: 1;
align-items: center;
color: #848484;
}
.dmp-title-draft {
text-align: left;
font-weight: 500;
font-family: "Roboto", sans-serif;
font-size: 1rem;
opacity: 0.81;
padding-top: 0.75rem;
padding-bottom: 0.55rem;
color: #f16868;
}
.icon-align {
display: inline-flex;
vertical-align: middle;
padding-bottom: 0.4rem;
}
.dataset-card-actions,
.dmp-card-actions {
display: flex;
flex-direction: row;
border-top: 1px solid #dbdbdb;
line-height: 4;
color: #848484;
}
.dataset-card-actions a,
.dmp-card-actions a {
color: #848484 !important;
text-decoration: none !important;
}
.dataset-card-actions a:hover,
.dmp-card-actions a:hover {
color: #129d99 !important;
}
.dmp-dataset-descriptions-title {
color: #000000;
opacity: 0.6;
padding-top: 1.5rem;
padding-bottom: 0.8rem;
}
.dmp-dataset-descriptions-name {
color: #000000;
opacity: 0.6;
font-weight: 700;
}
.show-more {
color: black !important;
}
.show-more:hover {
color: #129d99 !important;
}
.btn-load-more {
border: 2px solid #212121;
border-radius: 30px;
opacity: 1;
width: 132px;
height: 40px;
margin-top: 4.125rem;
}
.btn-load-more:hover {
background-color: black;
color: white;
}
.draft {
color: #f16868;
}
/* th {
text-transform: uppercase;
}
@ -41,8 +215,6 @@ a {
margin-right: 2.5em;
border-radius: 10em;
background-color: #0d7489;
/* background-color: rgba(0, 112, 192, 1); */
/* background-color: #007bff; */
color: #fff;
text-transform: uppercase;
text-align: center;
@ -65,4 +237,4 @@ a {
.view-all:hover {
color: rgb(46, 117, 182) !important;
}
} */

View File

@ -1,12 +1,90 @@
<div class="card">
<div *ngIf="dmpActivities != null">
<div *ngFor="let activity of dmpActivities">
<!-- if dmp -->
<div *ngIf="true" class="dmp-card">
<div class="d-flex flex-direction-row">
<div class="col-auto dmp-label">{{ 'DMP-LISTING.DMP' | translate }}</div>
<div class="col-auto ml-auto edited-date">Edited: 9 May 2020</div>
</div>
<div class="col-auto" [ngClass]="{'dmp-title': !isDraft, 'dmp-title-draft': isDraft}">
DMP for: Horizon 2020 for Grant DMP of the NEANIAS DMP plan</div>
<div class="dmp-subtitle">
<span class="col-auto">Owner</span>
<span>.</span>
<span class="col-auto"><span
class="material-icons icon-align">public</span>Published</span>
<!-- <span class="draft"><span class="material-icons">create</span>Draft</span> -->
<span>.</span>
<span class="col-auto">Version 1</span>
<span>.</span>
<span class="col-auto">Grant: NEANIAS Project</span>
</div>
<div class="col-auto dmp-dataset-descriptions-title">Contained Dataset Descriptions (5)
</div>
<!-- <div *ngFor="; let i = index" > -->
<!-- <div *ngIf="i < 3"></div> -->
<div class="col-auto dmp-dataset-descriptions-name">Dataset description: Horizon 2020
for Grant DMP of Dataset description</div>
<!-- </div> -->
<a href="#" class="d-flex justify-content-center pt-3 pb-3 show-more"><u>Show
more</u></a>
<div class="dmp-card-actions">
<a href="#" class="col-auto border-right"><span
class="material-icons icon-align pr-2">open_in_new</span>Export</a>
<a href="#" class="col-auto border-right"><span
class="material-icons icon-align">add</span>Add dataset description</a>
<a href="#" class="col-auto border-right"><span
class="material-icons icon-align pr-2">group_add</span>Invite
collaborators</a>
<a href="#" class="col-auto border-right"><span
class="material-icons icon-align pr-2">filter_none</span>Clone</a>
<a href="#" class="col-auto"><span
class="material-icons icon-align pl-2">more_horiz</span></a>
</div>
</div>
</div>
</div>
<!-- if dataset -->
<div *ngIf="true" class="dataset-card">
<div class="d-flex flex-direction-row">
<div class="col-auto dataset-label">Dataset Description</div>
<div class="col-auto ml-auto edited-date">Edited: 9 May 2020</div>
</div>
<div class="col-auto dataset-title">Dataset description: Horizon 2020 for Grant DMP of
Dataset description</div>
<div class="dataset-subtitle">
<span class="col-auto">Owner</span>
<span>.</span>
<span class="col-auto"><span
class="material-icons icon-align">done</span>Finalized</span>
<!-- <span><span class="material-icons">create</span>Draft</span> -->
<span>.</span>
<span class="col-auto">Grant: NEANIAS Project</span>
</div>
<div class="d-flex flex-direction-row pt-3 pb-3">
<div class="col-auto dataset-subtitle">Part of</div>
<div class="col-auto dmp-label">DMP</div>
<div class="col-auto dmp-title">DMP for: Horizon 2020 for Grant DMP of the NEANIAS
DMP plan</div>
</div>
<div class="dataset-card-actions">
<a href="#" class="col-auto border-right"><span
class="material-icons icon-align pr-2">open_in_new</span>Export</a>
<a href="#" class="col-auto border-right"><span
class="material-icons icon-align pr-2">group_add</span>Invite
collaborators</a>
<a href="#" class="col-auto"><span
class="material-icons icon-align pl-2">more_horiz</span></a>
</div>
</div>
<!-- <div class="card">
<div class="card-header card-header-plain">
<div class="card-desc">
<h4 class="card-title">
{{ 'RECENT-ACTIVITY.LAST-EDITED-DMP' | translate}}
</h4>
<!-- <p class="card-category">
{{ 'RECENT-ACTIVITY.LICENSE' | translate}}
</p> -->
</div>
<a class="view-all" [class.clickable]="isAuthenticated()" [routerLink]="['/plans/']">
{{ 'GENERAL.ACTIONS.VIEW-ALL' | translate}}</a>
@ -25,7 +103,6 @@
</thead>
<tbody *ngIf="dmpActivities != null">
<a *ngFor="let activity of dmpActivities" class="table-row" [routerLink]="['../plans/overview/' + activity.id]">
<!-- <tr (click)="redirect(activity.id, recentActivityTypeEnum.Dmp)" *ngFor="let activity of dmpActivities" style="cursor: pointer;"> -->
<td>{{ activity.label }}</td>
<td>
<div *ngIf="activity.profile" matTooltip="{{ activity.profile }}" class="template-name">
@ -103,4 +180,4 @@
</tbody>
</table>
</div>
</div>
</div> -->

View File

@ -24,6 +24,7 @@ import { takeUntil } from 'rxjs/operators';
export class RecentEditedActivityComponent extends BaseComponent implements OnInit {
dmpActivities: DmpListingModel[];
recentActivityTypeEnum = RecentActivityType;
isDraft: boolean;
constructor(
private router: Router,

View File

@ -0,0 +1,344 @@
<div id="page-top" class="bootstrap-overrides">
<!-- Navbar -->
<nav class="navbar navbar-expand-lg" id="nav">
<div class="container">
<a class="navbar-brand" href="#page-top"><img src="../../../assets/splash/assets/img/argos-logo.svg"></a>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"><i class="fas fa-bars ml-1"></i></button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav text-uppercase ml-auto">
<li class="my-nav-item">
<a class="my-nav-link dropbtn" href="#about">ABOUT</a>
<div id="aboutDropdown" class="dropdown-content">
<div class="dropdown-top"></div>
<div class="dropdown-options">
<a href="about/how-it-works.html">How it works</a>
<a href="https://trello.com/b/x49lylnK/argos" target="_blank">Roadmap</a>
<a href="about/faqs.html">faqs</a>
</div>
</div>
</li>
<li class="nav-item">
<a class="my-nav-link dropbtn" href="#resources">RESOURCES</a>
<div id="resourcesDropdown" class="dropdown-content">
<div class="dropdown-top"></div>
<div class="dropdown-options">
<a href="resources/media-kit.html">Media kit</a>
<a href="resources/user-guide.html">User Guide</a>
<a href="resources/co-branding.html">Co-branding</a>
</div>
</div>
</li>
<li class="my-nav-item"><a class="my-nav-link" href="contact.html">CONTACT</a></li>
<li class="my-nav-item"><a class="my-nav-link" (click)="openSignInDialog()">SIGN IN</a></li>
</ul>
</div>
</div>
</nav>
<!-- Header -->
<header class="head">
<div class="container">
<div class="row">
<div class="col-auto margin-right-6">
<h1>Plan and follow your data</h1>
<div class="head-subtitles">
<div class="d-flex flex-direction-row">
<h4>Create</h4>&nbsp;<h6>machine actionable DMPs.</h6>
</div>
<div class="d-flex flex-direction-row">
<h4>Configure</h4>&nbsp;<h6>to best fit your dicsipline.</h6>
</div>
<div class="d-flex flex-direction-row">
<h4>Link</h4>&nbsp;<h6>to EOSC components out of the box.</h6>
</div>
<div class="d-flex flex-direction-row">
<h4>Share</h4>&nbsp;<h6>easily in your repository.</h6>
</div>
</div>
<div class="head-subtitle">
<p class="body-text">Bring your Data Management Plans closer to where data are generated, analysed and stored.</p>
</div>
<div class="head-start-dmp">
<button type="button" class="normal-btn">Start your DMP</button>
</div>
</div>
<div class="col-auto ml-auto">
<img src="../../../assets/splash/assets/img/1.png" width="363" height="330">
</div>
</div>
</div>
</header>
<!-- Start -->
<section class="page-section start" id="start">
<div class="container">
<div class="row template-img">
<div class="col-auto margin-right-6">
<p class="title-1 mb-0">Start your</p>
<div class="d-flex flex-direction-row">
<p class="title-2 text-uppercase">Argos</p>&nbsp;<p class="title-2">experience</p>
</div>
<div class="options">
<div class="selected d-flex flex-direction-row option-row" id="id1"
onclick="document.getElementById('template-preview').src='../../../assets/splash/assets/img/template-preview-1.svg'; toggleClass(['id1','id2','id3'], 'id1')">
<p class="option-number">1</p>&nbsp;<p class="option-text">Select Templates</p>
</div>
<div class="not-selected d-flex flex-direction-row option-row" id="id2"
onclick="document.getElementById('template-preview').src='../../../assets/splash/assets/img/template-preview-2.svg'; toggleClass(['id1','id2','id3'], 'id2')">
<p class="option-number">2</p>&nbsp;<p class="option-text">Fill the information</p>
</div>
<div class="not-selected d-flex flex-direction-row option-row" id="id3"
onclick="document.getElementById('template-preview').src='../../../assets/splash/assets/img/template-preview-3.svg'; toggleClass(['id1','id2','id3'], 'id3')">
<p class="option-number">3</p>&nbsp;<p class="option-text">Share DMP</p>
</div>
</div>
</div>
<div class="col-auto ml-auto template-img">
<img id="template-preview" src="../../../assets/splash/assets/img/template-preview-1.svg" width="472" height="519">
</div>
</div>
</div>
</section>
<!-- Features -->
<section class="page-section features" id="features">
<div class="container">
<div class="row features-title">Features</div>
<div class="row features-layout">
<div class="col">
<div class="row feature-img">
<div class="col-auto"><img src="../../../assets/splash/assets/img/Asset 15.svg" width="84" height="107"></div>
</div>
<div class="row justify-content-center">
<div class="feature-subtitle">Produce DMP outputs</div>
</div>
<div class="row justify-content-center">
<div class="feature-desc">
Close the data management planning lifecycle by publishing your DMPs in a FAIR manner. Assign licenses, PIDs and publish DMPs in a repository of your choice.
</div>
</div>
</div>
<div class="col">
<div class="row feature-img">
<img src="../../../assets/splash/assets/img/Asset 14.svg" width="84" height="107">
</div>
<div class="row justify-content-center">
<div class="feature-subtitle">Update DMPs</div>
</div>
<div class="row justify-content-center">
<div class="feature-desc">
Treat DMPs as living documents. Secure their provenance and continue work in new versions (new DOIs assigned).
</div>
</div>
</div>
</div>
<div class="row features-layout">
<div class="col">
<div class="row feature-img">
<img src="../../../assets/splash/assets/img/Asset 12.svg" width="84" height="107">
</div>
<div class="row justify-content-center">
<div class="feature-subtitle">Re-use datasets & templates</div>
</div>
<div class="row justify-content-center">
<div class="feature-desc">
Identify datasets to be re-used in your DMP. Copy or clone dataset descriptions to other DMPs.
</div>
</div>
</div>
<div class="col">
<div class="row feature-img">
<img src="../../../assets/splash/assets/img/Asset 10.svg" width="84" height="107">
</div>
<div class="row justify-content-center">
<div class="feature-subtitle">Import and Export DMPs</div>
</div>
<div class="row justify-content-center">
<div class="feature-desc">
Import a .json file of your DMP and continue work in ARGOS. Export DMPs in machine readable (.xml) and machine-actionable (.json) formats.
</div>
</div>
</div>
</div>
<div class="row features-layout">
<div class="col">
<div class="row feature-img">
<img src="../../../assets/splash/assets/img/Asset 11.svg" width="84" height="107">
</div>
<div class="row justify-content-center">
<div class="feature-subtitle">Customise dataset descriptions</div>
</div>
<div class="row justify-content-center">
<div class="feature-desc">
Differentiate DMPs from dataset descriptions. Describe your datasets with more than one template and tailor its content to your specific needs.
</div>
</div>
</div>
<div class="col">
<div class="row feature-img">
<img src="../../../assets/splash/assets/img/Asset 13.svg" width="84" height="107">
</div>
<div class="row justify-content-center">
<div class="feature-subtitle">Connect with OpenAIRE & EOSC</div>
</div>
<div class="row justify-content-center">
<div class="feature-desc">
Use OpenAIRE and EOSC underlying services, sources and semantics to ease completion of DMPs and trace the quality of your research.
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Benefits -->
<section class="page-section benefits" id="benefits">
<div class="container">
<div class="row justify-content-around">
<div class="col"></div>
<div class="col d-flex align-items-center justify-content-center flex-direction-row">
<span class="section-title-1">Who</span>&nbsp;<span class="section-title-2">Benefits</span>
</div>
<div class="col">
<div class="row justify-content-center"><div class="col-auto">
<img src="../../../assets/splash/assets/img/2 - Copy.png" width="116" height="139">
</div>
</div>
</div>
</div>
<div class="row justify-content-around">
<div class="col-auto">
<div class="benefit-card">
<div class="row justify-content-center">
<span class="benefit-card-title">Funders</span>
</div>
<div class="row justify-content-center">
<span class="benefit-desc caption">Include DMPs in data management policies.</span>
</div>
<hr>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Add, update and modify DMP templates</span>
</div>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Enrich your organisations research graph</span>
</div>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Link argos to your</span>&nbsp;
<span class="benefit-card-sub-color">Monitoring Dashboard</span>
</div>
</div>
</div>
<div class="col-auto">
<div class="benefit-card">
<div class="row justify-content-center">
<span class="benefit-card-title">Researchers</span>
</div>
<div class="row justify-content-center">
<span class="benefit-desc-1 caption">Become Research Data Management literate and lead Open Science cultural change/ practices.</span>
</div>
<hr>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Comply with DMP requirements</span>
</div>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Learn and apply best practices for DMPs</span>
</div>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Co-edit DMPs and manage workload</span>
</div>
</div>
</div>
<div class="col-auto">
<div class="benefit-card">
<div class="row justify-content-center">
<span class="benefit-card-title">Institutions</span>
</div>
<div class="row justify-content-center">
<span class="benefit-desc caption">Support Open and FAIR Data Management Planning.</span>
</div>
<hr>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Add, update and modify DMP templates</span>
</div>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Connect your organisations services</span>
</div>
<div class="row benefit-ic">
<img src="../../../assets/splash/assets/img/ic_check_circle_24px.svg" width="20" height="20">
<span class="benefit-card-subtitle">Ensure research integrity and excellence</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Co-branding -->
<section class="page-section co-branding" id="co-branding">
<div class="container">
<div class="row justify-content-around">
<div class="col-auto">
<img class="mirror" src="../../../assets/splash/assets/img/3.png" width="311" height="309">
</div>
<div class="col-auto">
<div class="row">
<div class="col-auto branding-logo pl-0">
<img src="../../../assets/splash/assets/img/argos-logo - Copy.svg" width="91" height="35">
</div>
<span class="title-3">co-branding</span>
</div>
<div class="row">
<span class="co-branding-text">
ARGOS is based on OpenDMP, an open source software that can be deployed by third parties. ARGOS development team welcomes contributions by the international community to strengthen functionalities and further align with global fora.
</span>
</div>
<div class="row">
<div class="head-start-dmp">
<button type="button" class="normal-btn">Learn more</button>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer-->
<footer class="footer">
<div class="container">
<div class="row justify-content-center">
<div class="col-auto">
<img src="../../../assets/splash/assets/img/argos-logo - Copy.svg" width="98" height="37">
</div>
<div class="col-auto">
<div class="footer-text">ARGOS receives funding from the European Union's Horizon 2020 Research and Innovation programme under grant agreement No. 731011.</div>
</div>
<div class="col-auto">
<img src="../../../assets/splash/assets/img/Logo_Horizontal_white_small.png" width="126" height="30">
</div>
</div>
<div class="row justify-content-center pt-5">
<div class="col d-flex justify-content-end">
<a class="btn rounded-circle btn-social mx-1" href="#!"><i class="fab fa-xs fa-facebook-f"></i></a>
<a class="btn rounded-circle btn-social twitter mx-1" href="#!"><i class="fab fa-xs fa-twitter"></i></a>
<a class="btn rounded-circle btn-social linkedin mx-1" href="#!"><i class="fab fa-xs fa-linkedin-in"></i></a>
<a class="btn rounded-circle btn-social youtube mx-1" href="#!"><i class="fab fa-xs fa-youtube"></i></a>
</div>
<div class="col">
<a class="btn mx-1" href="#!"><span class="newsletter">Newsletter</span><i class="fas fa-lg fa-wifi wifi-rotate"></i></a>
</div>
</div>
<div class="row justify-content-center pt-5">
<a class="col d-flex justify-content-end conditions-policy" href="#!">Terms and conditions</a>
<a class="col conditions-policy" href="#!">Cookies policy</a>
</div>
<div class="row justify-content-center pt-5">
<div class="col-auto"><img src="../../../assets/splash/assets/img/Cc.logo.circle.png" width="24" height="24"></div>
<div class="col-auto pl-0"><img src="../../../assets/splash/assets/img/univ-access.png" width="24" height="24"></div>
<div class="licence">Unless otherwise indicated, all materials created by OpenAIRE are licenced under</div>&nbsp;
<div class="licence"><u>ATTRIBUTION 4.0 INTERNATIONAL LICENSE.</u></div>
</div>
</div>
</footer>
</div>

View File

@ -0,0 +1,724 @@
// Contact
.main-contact {
padding: 3rem 16.5rem;
}
.required {
color: #E54242;
font-weight: 400;
font-family: 'Roboto', sans-serif;
font-size: 1rem;
}
.form {
padding-top: 3.5rem;
}
.form-title {
text-align: left;
font-weight: 700;
font-family: 'Roboto', sans-serif;
font-size: 1.12rem;
color: #212121;
}
// Footer
.footer {
background: #F3F3F3 0% 0% no-repeat padding-box;
opacity: 1;
}
.footer-text {
text-align: left;
font-size: 0.75rem;
font-weight: 300;
font-family: 'Roboto', sans-serif;
color: #000000;
opacity: 1;
max-width: 460px;
margin: 0rem 2.5rem;
}
.btn-social {
border: 1px solid black !important;
color: black;
font-size: 28px;
opacity: 0.8;
padding: 0.2rem 1.2rem;
}
// .twitter, .youtube, .linkedin {
// padding: .375rem .575rem !important;
// }
.newsletter {
text-align: left;
font-weight: 500;
font-size: 1.18rem;
color: #000000;
opacity: 1;
}
.wifi-rotate {
color: black;
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.conditions-policy {
text-align: left;
text-decoration: underline;
font-weight: 400;
font-family: 'Roboto',sans-serif;
font-size: 1rem;
color: #000000;
opacity: 1;
}
.licence {
text-align: left;
font-weight: 300;
font-family: 'Roboto',sans-serif;
font-size: 0.75rem;
line-height: 2.4;
color: #000000;
opacity: 1;
}
// Header
header.head {
text-align: center;
color: #fff;
background-image: url("../../../assets/splash/assets/img/gradinet-background.svg");
background-repeat: no-repeat;
background-size: cover;
}
.head-subtitles {
margin-top: 1.93rem;
}
.head-subtitle {
margin-top: 1.65rem;
width: 23.4rem;
}
.head-start-dmp {
display: flex;
margin-top: 2.6rem;
}
@media (min-width: 768px) {
header.head {
padding-top: 3.8rem;
/* padding-bottom: calc(100% - 3.8rem); */
padding-bottom: 5.4rem;
}
}
// Navbar
.bootstrap-overrides .navbar {
position: relative;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
padding-top: 3.18rem;
padding-left: 0;
padding-right: 0;
background-color: white;
margin-bottom: 0px !important;
}
.bootstrap-overrides .navbar .container {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
.bootstrap-overrides .navbar-brand {
display: inline-block;
width: 135px;
height: 51px;
font-size: 1.25rem;
line-height: inherit;
white-space: nowrap;
}
.bootstrap-overrides .navbar-nav {
display: flex;
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
margin-left: auto;
list-style: none;
}
.bootstrap-overrides .navbar-nav .nav-link {
padding-right: 0;
padding-left: 0;
}
.bootstrap-overrides .navbar-nav .dropdown-menu {
position: static;
float: none;
}
.navbar-collapse {
flex-basis: 100%;
flex-grow: 1;
align-items: center;
padding-top: 0.5rem;
}
.navbar-toggler {
padding: 0.25rem 0.75rem;
font-size: 1.25rem;
line-height: 1;
background-color: transparent;
border: 1px solid transparent;
border-radius: 0.25rem;
}
.navbar-toggler:hover, .navbar-toggler:focus {
text-decoration: none;
}
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
height: 1.5em;
vertical-align: middle;
content: "";
background: no-repeat center center;
background-size: 100% 100%;
}
.nav {
display: flex;
flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.my-nav-link {
display: block;
padding: 0.5rem 1rem;
margin-left: 1rem;
cursor: pointer;
text-align: left;
font: Bold 14px/17px Roboto;
letter-spacing: 0px;
color: #000000;
opacity: 1;
}
.my-nav-link:hover, .my-nav-link:focus {
text-decoration: none;
}
.my-nav-link.disabled {
color: #6c757d;
pointer-events: none;
cursor: default;
}
.active-nav-link {
border-bottom: 4px solid #23BCBA !important;
border-left: 0 !important;
border-right: 0 !important;
border-radius: 0px !important;
}
.my-nav-item {
margin-bottom: -1px;
position: relative;
display: inline-block;
}
.my-nav-link {
width: fit-content;
border: 1px solid transparent;
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
/* .my-nav-link:hover {
border-bottom: 4px solid #23BCBA !important;
border-left: 0 !important;
border-right: 0 !important;
border-radius: 0px !important;
} */
.my-nav-link.disabled {
color: #6c757d;
background-color: transparent;
border-color: transparent;
}
.my-nav-link.active, .my-nav-item.show .my-nav-link {
color: #495057;
background-color: #fff;
border-color: #dee2e6 #dee2e6 #fff;
}
.my-nav-link {
border-radius: 0.25rem;
}
.my-nav-link.active, .show>.my-nav-link {
color: #000000;
background-color: #23BCBA;
}
.nav-fill .my-nav-item {
flex: 1 1 auto;
text-align: center;
}
.nav-justified .my-nav-item {
flex-basis: 0;
flex-grow: 1;
text-align: center;
}
.navbar-expand {
flex-flow: row nowrap;
justify-content: flex-start;
}
.navbar-expand>.container, .navbar-expand>.container-fluid, .navbar-expand>.container-sm, .navbar-expand>.container-md, .navbar-expand>.container-lg, .navbar-expand>.container-xl {
padding-right: 0;
padding-left: 0;
}
.navbar-expand .navbar-nav {
flex-direction: row;
}
.navbar-expand .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand .navbar-nav .my-nav-link {
padding-right: 1rem;
padding-left: 1rem;
}
.navbar-expand>.container, .navbar-expand>.container-fluid, .navbar-expand>.container-sm, .navbar-expand>.container-md, .navbar-expand>.container-lg, .navbar-expand>.container-xl {
flex-wrap: nowrap;
}
.navbar-expand .navbar-collapse {
display: flex !important;
flex-basis: auto;
}
.navbar-expand .navbar-toggler {
display: none;
}
.dropdown-top {
width: 0px;
border-bottom: 10px solid #23BCBA;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
margin: 0 20%;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
z-index: 2;
}
.dropdown-options {
background-color: #23BCBA;
border-radius: 5px;
min-width: 160px;
width: 214px;
overflow: auto;
padding: 20px 0px;
}
.dropdown-content a {
text-align: left;
font-weight: 700;
font-family: 'Roboto', sans-serif;
font-size: 0.87rem;
color: #FFFFFF;
text-transform: uppercase;
opacity: 1;
padding: 8px 28px;
text-decoration: none;
display: block;
}
.dropdown-options a:hover {
background-color: rgba(255, 255, 255, 0.609) !important;
}
.dropdown-options a:hover {
background-color: #ddd;
}
.my-nav-item:hover .dropdown-content {
display: block;
}
.show {
display: block;
}
@media (max-width: 991.98px) {
.navbar-expand-lg>.container {
padding-right: 0;
padding-left: 0;
}
#nav.navbar-shrink {
padding-top: 1rem;
padding-bottom: 1rem;
background-color: #212529 !important;
}
#nav.navbar-shrink .navbar-brand {
font-size: 1.25em;
}
#nav.navbar-shrink .navbar-brand svg {
height: 1.5rem;
}
#nav.navbar-shrink .my-nav-link, #nav.navbar-shrink button {
color: white;
}
#nav.navbar-shrink .my-nav-link:hover {
color: #23BCBA;
}
}
@media (min-width: 992px) {
.navbar-expand-lg {
flex-flow: row nowrap;
justify-content: flex-start;
}
.navbar-expand-lg .navbar-nav {
flex-direction: row;
}
.navbar-expand-lg .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-lg .navbar-nav .my-nav-link {
padding-right: 1.2rem;
padding-left: 1.2rem;
}
.navbar-expand-lg>.container {
flex-wrap: nowrap;
}
.navbar-expand-lg .navbar-collapse {
display: flex !important;
flex-basis: auto;
}
.navbar-expand-lg .navbar-toggler {
display: none;
}
}
@media (min-width: 992px) {
#nav {
padding-top: 1.5rem;
padding-bottom: 1.5rem;
border: none;
background-color: transparent;
transition: padding-top 0.3s ease-in-out, padding-bottom 0.3s ease-in-out;
}
#nav .navbar-brand {
font-size: 1.5em;
transition: font-size 0.3s ease-in-out;
}
#nav .navbar-brand img {
/* height: 2rem; */
transition: height 0.3s ease-in-out;
}
#nav.navbar-shrink {
padding-top: 1rem;
padding-bottom: 1rem;
background-color: #212529 !important;
}
#nav.navbar-shrink .navbar-brand {
font-size: 1.25em;
}
#nav.navbar-shrink .navbar-brand svg, #mainNav.navbar-shrink .navbar-brand img {
height: 1.5rem;
}
#nav.navbar-shrink .my-nav-link, #nav.navbar-shrink button {
color: white;
}
#nav.navbar-shrink .my-nav-link:hover {
color: #23BCBA;
}
#nav .navbar-nav .my-nav-item {
margin-right: 1rem;
}
#nav .navbar-nav .my-nav-item:last-child {
margin-right: 0;
}
}
// Section
section.start {
text-align: center;
color: #fff;
background: #23BCBA 0% 0% no-repeat padding-box;
}
.template-img {
margin-right: 6.8rem;
}
.options {
padding-top: 4rem;
}
.option-row {
cursor: pointer;
}
.option-number {
text-align: left;
font-weight: 700;
font-family: 'Roboto', sans-serif;
font-size: 3.25rem;
line-height: 1;
letter-spacing: 0px;
color: #0E6978;
opacity: 1;
padding: 0rem 1rem;
}
.option-text {
display: flex;
align-items: center;
text-align: left;
font-weight: 300;
font-family: 'Roboto', sans-serif;
font-size: 1.56rem;
line-height: 1.68rem;
letter-spacing: 0px;
color: #FFFFFF;
}
.selected {
opacity: 1;
}
.not-selected {
opacity: 0.6;
}
.features-layout {
display: flex;
justify-content: space-around;
padding-bottom: 4rem;
}
.features-title {
display: flex;
justify-content: center;
font-weight: 700;
font-family: 'Roboto', sans-serif;
font-size: 2.37rem;
padding-bottom: 3rem;
color: #212121;
opacity: 1;
}
.feature-subtitle {
text-align: center;
font-weight: 700;
font-family: 'Roboto', sans-serif;
font-size: 1.87rem;
padding: 1.5rem 0rem;
color: #000000;
opacity: 0.8;
}
.feature-img {
display: flex;
justify-content: center;
}
.feature-desc {
text-align: center;
font-size: 1rem;
color: #292747;
opacity: 1;
max-width: 429px;
}
section.benefits {
background: #F3F3F3 0% 0% no-repeat padding-box;
opacity: 1;
}
.section-title-1 {
text-align: center;
font-weight: 300;
font-family: 'Roboto', sans-serif;
font-size: 2.37rem;
color: #212121;
}
.section-title-2 {
text-align: center;
font-weight: 700;
font-family: 'Roboto', sans-serif;
font-size: 2.37rem;
color: #212121;
}
.section-title-3 {
text-align: left;
font-weight: 300;
font-family: 'Roboto', sans-serif;
font-size: 2.37rem;
color: #212121;
}
.benefit-card {
width: 370px;
height: 378px;
background: #FFFFFF 0% 0% no-repeat padding-box;
box-shadow: 0px 6px 15px #0000001A;
border-radius: 36px;
opacity: 1;
}
.benefit-card-title {
text-align: center;
font-weight: 300;
font-family: 'Roboto', sans-serif;
font-size: 1.68rem;
color: #292747;
opacity: 1;
padding: 2.81rem 0rem 1.5rem 0rem;
}
.benefit-desc {
text-align: center;
color: #292747;
max-width: 226px;
}
.benefit-desc-1 {
text-align: center;
color: #292747;
max-width: 250px;
}
.benefit-card hr {
width: 286px;
border: 1px solid #DBDBDB;
opacity: 1;
margin-top: 1.5rem !important;
margin-bottom: 1.5rem !important;
}
.benefit-card-subtitle {
text-align: left;
font-weight: 400;
font-family: 'Roboto', sans-serif;
font-size: 0.87rem;
color: #292747;
padding-left: 10px;
}
.benefit-card-sub-color {
text-align: left;
font-weight: 400;
font-family: 'Roboto', sans-serif;
font-size: 0.87rem;
color: #008887;
}
.benefit-ic {
margin-left: 40px !important;
margin-bottom: .8rem;
}
.branding-logo {
display: flex;
align-items: flex-end;
}
.co-branding-text {
text-align: left;
font-family: 'Roboto', sans-serif;
font-weight: 300;
font-size: 1rem;
color: #212121;
opacity: 0.81;
max-width: 357px;
padding-top: 1.5rem;
}
.media-kit-logo-title, .moo-card-logo-title {
text-align: left;
font-weight: 300;
font-family: 'Roboto',sans-serif;
font-size: 1.25rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.81;
}
.co-branding p, .user-guide p, .media-kit p {
text-align: left;
font-family: 'Roboto', sans-serif;
font-weight: 400;
font-size: 0.87rem;
line-height: 1.6rem;
letter-spacing: 0px;
color: #212121;
opacity: 0.8;
padding: 2rem 0rem;
}
section.media-kit-logo {
background: #F3F3F3;
opacity: 1;
}
@media (min-width: 768px) {
section.start, section.features, section.co-branding, section.user-guide, section.media-kit .footer {
padding-top: 6rem;
padding-bottom: 5.4rem;
}
section.benefits {
padding-top: 3.8rem;
padding-bottom: 5.4rem;
}
section.contact {
padding-top: 2.8rem;
padding-bottom: 0.5rem;
}
section.how-it-works {
padding-top: 2.8rem;
padding-bottom: 3.8rem;
}
section.media-kit-logo, section.moo-cards {
padding-top: 4rem;
padding-bottom: 5rem;
}
.footer {
padding-top: 4.8rem;
padding-bottom: 2rem;
}
}

View File

@ -0,0 +1,62 @@
import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material';
import { SignInDialogComponent } from '@common/modules/sign-in-dialog/sign-in-dialog.component';
@Component({
selector: 'app-guest-component',
templateUrl: './guest.component.html',
styleUrls: ['./guest.component.scss']
})
export class GuestComponent implements OnInit {
constructor(public dialog: MatDialog) {
}
ngOnInit() {
this.navbarCollapse();
window.addEventListener('scroll', this.scroll, true);
}
ngOnDestroy() {
window.removeEventListener('scroll', this.scroll, true);
}
public toggleClass(ids, option) {
ids.forEach(id => {
var element = document.getElementById(id);
var className = element.getAttribute("class").replace(/ .*/, '');
console.log(className);
if (id === option) {
element.classList.replace(className, "selected");
} else {
element.classList.replace(className, "not-selected");
}
})
}
public navbarCollapse() {
var element = document.getElementById('nav');
if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) {
element.classList.add("navbar-shrink");
element.classList.add("fixed-top");
} else {
element.classList.remove("navbar-shrink");
element.classList.remove("fixed-top");
}
};
scroll = (event): void => {
this.navbarCollapse();
};
public openSignInDialog(): void {
const dialogRef = this.dialog.open(SignInDialogComponent);
dialogRef.afterClosed().subscribe(result => {
console.log(`Dialog result: ${result}`);
});
}
}

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { CommonUiModule } from '@common/ui/common-ui.module';
import { GuestComponent } from './guest.component';
import { GuestRoutingModule } from './guest.routing';
import { SignInDialogModule } from '@common/modules/sign-in-dialog/sign-in-dialog.module';
@NgModule({
imports: [
CommonUiModule,
GuestRoutingModule,
SignInDialogModule
],
declarations: [
GuestComponent
]
})
export class GuestModule { }

View File

@ -0,0 +1,16 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { GuestComponent } from './guest.component';
const routes: Routes = [
{
path: '',
component: GuestComponent,
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class GuestRoutingModule { }

View File

@ -1,5 +1,6 @@
.input-search {
width: 300px;
width: 150px;
/* width: 300px; */
border: 1px solid rgb(218, 218, 218);
border-radius: 6px;
padding-left: 10px;

View File

@ -1,95 +1,52 @@
<nav class="navbar navbar-expand-lg fixed-navbar">
<div class="container-fluid">
<div class="navbar-wrapper">
<app-breadcrumb></app-breadcrumb>
<!-- <a routerLink="/home">
<i class="material-icons">dashboard</i>
</a>
<a class="navbar-brand" routerLink="/home">{{ 'NAV-BAR.BREADCRUMB-ROOT' | translate }}</a> -->
</div>
<button class="navbar-toggler" type="button" (click)="sidebarToggle()">
<span class="sr-only">Toggle navigation</span>
<span class="navbar-toggler-icon icon-bar"></span>
<span class="navbar-toggler-icon icon-bar"></span>
<span class="navbar-toggler-icon icon-bar"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navigation">
<ng-container>
<nav class="navbar navbar-expand-lg fixed-navbar">
<div class="container-fluid">
<!-- <form class="navbar-form">
<div class="input-group input-search">
<input type="text" value="" class="form-control" placeholder="SEARCH...">
<button type="submit" class="btn btn-link"><i class="material-icons">search</i></button>
</div>
</form> -->
<!-- Language
<div class="col-auto">
<button mat-icon-button [matMenuTriggerFor]="languageMenu">
<mat-icon>language</mat-icon>
</button>
<mat-menu #languageMenu="matMenu">
<button mat-menu-item
(click)="onLanguageSelected(languageTypes.English)">{{'NAVIGATION.ENGLISH-LANGUAGE' | translate}}</button>
<button mat-menu-item
(click)="onLanguageSelected(languageTypes.Greek)">{{'NAVIGATION.GREEK-LANGUAGE' | translate}}</button>
</mat-menu>
</div> -->
<div class="col-md-auto" *ngIf="!(isAuthenticated() && onInvalidUrl())">
<button mat-icon-button [matMenuTriggerFor]="languageMenu" [matTooltip]="this.getCurrentLanguage().label | translate">
<mat-icon>language</mat-icon>
</button>
<mat-menu #languageMenu="matMenu" class="lang-parent">
<app-language></app-language>
</mat-menu>
<div class="hamburger change" id="hamburger" (click)="sidebarToggleOutput($event)">
<div class="icon-bar1"></div>
<div class="icon-bar2"></div>
<div class="icon-bar3"></div>
</div>
<a href="#" class="logo"><img src="../../../assets/splash/assets/img/argos-logo.svg"></a>
<div class="collapse navbar-collapse justify-content-end" id="navigation">
<app-search></app-search>
<div class="col-md-auto" *ngIf="!(isAuthenticated() && onInvalidUrl())">
<button type="button" class="normal-btn ml-auto" [routerLink]="['/quick-wizard']">Start new DMP</button>
<a class="ml-4 mr-4 faq-title" (click)="openFaqDialog()"><b>FAQ</b></a>
<!-- <button mat-icon-button class="lang" [matMenuTriggerFor]="languageMenu"></button> -->
<button mat-button [matMenuTriggerFor]="languageMenu" class="p-0 lang"><mat-icon class="mr-2">language</mat-icon><span class="text-uppercase">{{selectedLanguage}}</span><mat-icon>arrow_drop_down</mat-icon></button>
<mat-menu #languageMenu="matMenu" class="lang-parent">
<app-language (languageChange)="getLanguage($event)"></app-language>
</mat-menu>
</div>
<ul class="navbar-nav">
<!-- Notifications -->
<!-- <li class="nav-item dropdown">
<a class="nav-link" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="material-icons md-32">notifications</i>
<span class="notification">3</span>
<p>
<span class="d-lg-none d-md-block">Some Actions</span>
</p>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="#">Mike John responded to your email</a>
<a class="dropdown-item" href="#">You have 5 new tasks</a>
<a class="dropdown-item" href="#">You're now friend with Andrew</a>
<a class="dropdown-item" href="#">Another Notification</a>
<a class="dropdown-item" href="#">Another One</a>
</div>
</li> -->
<app-search></app-search>
<!-- Admin -->
<!-- <a *ngIf="isAdmin()" mat-button class="buttonNav navbar-button"
routerLink="/users">{{'NAV-BAR.USERS' | translate}}</a>
<a *ngIf="isAdmin()" mat-button class="buttonNav navbar-button" routerLink="/dmp-profiles">{{'NAV-BAR.DMP-PROFILES' |
translate}}</a>
<a *ngIf="isAdmin()" mat-button class="buttonNav navbar-button" routerLink="/dataset-profiles">{{'NAV-BAR.DATASETS-ADMIN'
| translate}}</a> -->
<!-- Login -->
<li class="nav-item" *ngIf="isAuthenticated();else loginoption">
<img mat-card-avatar class="my-mat-card-avatar" [src]="this.getPrincipalAvatar()" (error)="this.applyFallbackAvatar($event)" (click)="openProfile()" [matTooltip]="this.getPrincipalName()">
<!-- <img mat-card-avatar class="my-mat-card-avatar" *ngIf="!this.principalHasAvatar()" [src]="this.getDefaultAvatar()" (click)="openProfile()"> -->
</li>
<ng-template #loginoption>
<button mat-button [routerLink]=" ['/login'] ">
<span class="login-label">{{ 'GENERAL.ACTIONS.LOG-IN' | translate }}</span>
</button>
</ng-template>
</ul>
<ul class="navbar-nav">
<!-- Login -->
<li class="nav-item" *ngIf="isAuthenticated();else loginoption">
<img mat-card-avatar class="my-mat-card-avatar" [src]="this.getPrincipalAvatar()" (error)="this.applyFallbackAvatar($event)" (click)="openProfile()" [matTooltip]="this.getPrincipalName()">
<!--<img mat-card-avatar class="my-mat-card-avatar" *ngIf="!this.principalHasAvatar()" [src]="this.getDefaultAvatar()" (click)="openProfile()"> -->
</li>
<ng-template #loginoption>
<button mat-button [routerLink]=" ['/login'] ">
<span class="login-label">{{ 'GENERAL.ACTIONS.LOG-IN' | translate }}</span>
</button>
</ng-template>
</ul>
</div>
</div>
</nav>
<div *ngIf="progressIndication" class="progress-bar">
<mat-progress-bar color="primary" mode="indeterminate"></mat-progress-bar>
</div>
</nav>
<div *ngIf="progressIndication" class="progress-bar">
<mat-progress-bar color="primary" mode="indeterminate"></mat-progress-bar>
</div>
</ng-container>
<!-- Admin -->
<!-- <a *ngIf="isAdmin()" mat-button class="buttonNav navbar-button"
routerLink="/users">{{'NAV-BAR.USERS' | translate}}</a>
<a *ngIf="isAdmin()" mat-button class="buttonNav navbar-button" routerLink="/dmp-profiles">{{'NAV-BAR.DMP-PROFILES' |
translate}}</a>
<a *ngIf="isAdmin()" mat-button class="buttonNav navbar-button" routerLink="/dataset-profiles">{{'NAV-BAR.DATASETS-ADMIN'
| translate}}</a> -->

View File

@ -18,7 +18,69 @@ $mat-card-header-size: 40px !default;
.fixed-navbar {
position: fixed;
z-index: 1000;
height: 70px;
height: 80px;
display: flex;
background: #ffffff 0% 0% no-repeat padding-box;
box-shadow: 0px 0px 6px #00000029;
opacity: 1;
top: 0;
left: 0;
right: 0;
}
.logo {
width: 98px;
height: 37px;
margin-top: 15px;
margin-left: 5px;
}
.faq-title {
text-align: left;
font: Bold 15px/18px "Roboto";
letter-spacing: 0px;
color: #000000;
opacity: 1;
cursor: pointer;
}
.faq-title:hover {
color: #23bcba;
}
.lang {
opacity: 0.8;
}
.hamburger {
display: inline-block;
cursor: pointer;
padding: 0.4rem 1.5rem 0rem;
}
.icon-bar1,
.icon-bar2,
.icon-bar3 {
width: 18px;
height: 2px;
background-color: #333;
margin: 3px 0;
transition: 0.4s;
}
.change .icon-bar1 {
-webkit-transform: rotate(-45deg) translate(-3px, 3px);
transform: rotate(-45deg) translate(-3px, 3px);
}
.change .icon-bar2 {
opacity: 0;
}
.change .icon-bar3 {
-webkit-transform: rotate(45deg) translate(-4px, -4px);
transform: rotate(45deg) translate(-4px, -4px);
}
::ng-deep.lang-parent {

View File

@ -1,5 +1,5 @@
import { Location } from '@angular/common';
import { Component, ElementRef, OnInit } from '@angular/core';
import { Component, ElementRef, EventEmitter, OnInit, Output } from '@angular/core';
import { MatDialog } from '@angular/material';
import { Router } from '@angular/router';
import { AppRole } from '@app/core/common/enum/app-role';
@ -11,6 +11,7 @@ import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.
import { DATASETS_ROUTES, DMP_ROUTES, GENERAL_ROUTES } from '../sidebar/sidebar.component';
import { LanguageService } from '@app/core/services/language/language.service';
import { UserService } from '@app/core/services/user/user.service';
import { FaqDialogComponent } from '../faq/dialog/faq-dialog.component';
const availableLanguages: any[] = require('../../../assets/resources/language.json');
@ -29,7 +30,8 @@ export class NavbarComponent extends BaseComponent implements OnInit {
languages = availableLanguages;
language = this.languages[0];
currentRoute: string;
selectedLanguage = 'en';
@Output() sidebarToggled: EventEmitter<any> = new EventEmitter();
constructor(location: Location,
private element: ElementRef,
@ -50,17 +52,17 @@ export class NavbarComponent extends BaseComponent implements OnInit {
this.listTitles.push(DMP_ROUTES.filter(listTitle => listTitle));
// this.listTitles.push(HISTORY_ROUTES.filter(listTitle => listTitle));
this.listTitles.push(DATASETS_ROUTES.filter(listTitle => listTitle));
const navbar: HTMLElement = this.element.nativeElement;
this.toggleButton = navbar.getElementsByClassName('navbar-toggler')[0];
this.router.events.subscribe((event) => {
this.sidebarClose();
var $layer: any = document.getElementsByClassName('close-layer')[0];
this.currentRoute = this.router.url;
if ($layer) {
$layer.remove();
this.mobile_menu_visible = 0;
}
});
// const navbar: HTMLElement = this.element.nativeElement;
// this.toggleButton = navbar.getElementsByClassName('navbar-toggler')[0];
// this.router.events.subscribe((event) => {
// this.sidebarClose();
// var $layer: any = document.getElementsByClassName('close-layer')[0];
// this.currentRoute = this.router.url;
// if ($layer) {
// $layer.remove();
// this.mobile_menu_visible = 0;
// }
// });
this.progressIndicationService.getProgressIndicationObservable().pipe(takeUntil(this._destroyed)).subscribe(x => {
setTimeout(() => { this.progressIndication = x; });
@ -210,4 +212,30 @@ export class NavbarComponent extends BaseComponent implements OnInit {
position: { top: '64px', right: '1em' }
});
}
openFaqDialog() {
if (this.dialog.openDialogs.length > 0) {
this.dialog.closeAll();
}
else {
const dialogRef = this.dialog.open(FaqDialogComponent, {
disableClose: true,
data: {
isDialog: true
}
});
}
}
getLanguage(selectedLanguage: string) {
this.selectedLanguage = selectedLanguage;
}
toggleNavbar(event) {
document.getElementById('hamburger').classList.toggle("change");
}
sidebarToggleOutput(event) {
this.sidebarToggled.emit(event);
}
}

View File

@ -1,9 +1,8 @@
.sidebar-footer {
padding: white;
color: rgb(117, 117, 117);
background-color: #3333333d;
/* background-color: #ffffff; */
/* box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(255, 255, 255, 0.4); */
font-weight: 700;
font-size: 0.75rem;
}
.sidebar-footer .option {
@ -11,13 +10,12 @@
padding-top: 2px;
padding-bottom: 2px;
border-radius: 0px;
color: white;
cursor: pointer;
display: inline-flex;
font-size: small;
}
.sidebar-footer :hover {
.sidebar-footer .option:hover {
color: #00b29f;
}

View File

@ -1,41 +1,33 @@
<div class="sidebar-footer col-12">
<!-- <div class="sidebar-footer d-flex justify-content-around">
<a class="option vl" href="#">
<i class="material-icons style-icon">mode_comment</i>
Glossary
</a>
<a class="option vl" href="#"><i class="fa fa-book style-icon"></i>Guide</a>
<a class="option" href="#"><i class="fa fa-life-ring style-icon"></i>Help</a>
</div> -->
<div class="row d-flex flex-reverse">
<div class="col-12 text-center">
<p class="option" (click)="openUserGuideDialog()" [ngClass]="{'option-active': this.router.url === '/user-guide'}">
<!-- <i class="fa fa-question-circle pr-2 pt-1"></i> -->
{{'FOOTER.GUIDE' | translate}}</p>
<div class="row ml-2">
<div class="col-auto">
<p class="option" (click)="navigate()" [ngClass]="{'option-active': this.router.url === '/about'}">
{{'FOOTER.ABOUT' | translate}}</p>
</div>
</div>
<div class="row d-flex flex-reverse">
<div class="col-6 text-center">
<p class="option" (click)="openGlossaryDialog()" [ngClass]="{'option-active': this.router.url === '/glossary'}">
<!-- <i class="fa fa-book pr-2 pt-1"></i> -->
{{'FOOTER.GLOSSARY' | translate}}</p>
</div>
<div class="col-6 text-center">
<p class="option" (click)="openFaqDialog()" [ngClass]="{'option-active': this.router.url === '/faq'}">
<!-- <i class="fa fa-question-circle pr-2 pt-1"></i> -->
{{'FOOTER.FAQ' | translate}}</p>
</div>
</div>
<div class="row d-flex flex-reverse">
<div *ngIf="isAuthenticated()" class="col-6 text-center">
<div *ngIf="isAuthenticated()" class="col-auto">
<p class="option" (click)="openContactDialog()" [ngClass]="{'option-active': this.router.url === '/contact-support'}">
<!-- <i class="fa fa-envelope-open pr-2 pt-1"></i> -->
{{'FOOTER.CONTACT-SUPPORT' | translate}}</p>
</div>
<div class="col-6 text-center">
<a class="option" [routerLink]="['/terms-of-service']" [routerLinkActive]="['option-active']">
<!-- <i class="fa fa-balance-scale pr-2 pt-1"></i> -->
{{'FOOTER.TERMS-OF-SERVICE' | translate}}</a>
</div>
<div class="row ml-2">
<div class="col-auto">
<p class="option" (click)="openGlossaryDialog()" [ngClass]="{'option-active': this.router.url === '/glossary'}">
{{'FOOTER.GLOSSARY' | translate}}</p>
</div>
<div class="col-auto">
<p class="option" [routerLink]="['/terms-of-service']" [routerLinkActive]="['option-active']">
{{'FOOTER.TERMS-OF-SERVICE' | translate}}</p>
</div>
<!-- <div class="col-6 text-center">
<p class="option" (click)="openFaqDialog()" [ngClass]="{'option-active': this.router.url === '/faq'}">
{{'FOOTER.FAQ' | translate}}</p>
</div> -->
</div>
<div class="row ml-2">
<div class="col-auto">
<p class="option" (click)="openUserGuideDialog()" [ngClass]="{'option-active': this.router.url === '/user-guide'}">
{{'FOOTER.GUIDE' | translate}}</p>
</div>
<!-- <div class="col-auto text-center">
<a class="option" [routerLink]="['/privacy-policy']" [routerLinkActive]="['option-active']">

View File

@ -131,4 +131,8 @@ export class SidebarFooterComponent extends BaseComponent implements OnInit {
public isAuthenticated(): boolean {
return !(!this.authentication.current());
}
public navigate(): any {
this.router.navigateByUrl('/about');
}
}

View File

@ -17,11 +17,8 @@
}
.nav hr {
width: 230px;
border-top: 1px solid #fff;
border-bottom: 2px solid #d4d4d4;
margin-top: 0.5rem;
margin-bottom: 0.8rem;
border-bottom: 1px solid #E1E1E1;
}
.sidebar-footer {
@ -32,3 +29,41 @@
background: white;
height: 70px;
}
.nav-row {
display: flex;
flex-direction: row;
width: 100%;
padding: 10px 20px;
text-align: left;
letter-spacing: 0px;
color: #000000;
opacity: 1;
font-size: 0.93rem;
font-family: 'Roboto',sans-serif;
}
.nav-row:hover {
background-color: #ececec;
border-radius: 6px;
}
.icon {
width: 24px;
height: 24px;
vertical-align: middle;
color: #6B6B6B;
}
.nav-row span {
padding-left: 1.5rem;
}
.mat-list {
padding-top: 0px !important;
display: flex !important;
}
.mat-list div {
width: 100%;
}

View File

@ -1,86 +1,22 @@
<div class="logo sidebar-nav">
<a [routerLink]=" ['/home']">
<div class="logo-img">
<img src="/assets/images/OpenDMP.png" />
</div>
</a>
</div>
<div class="sidebar-wrapper">
<!-- MOBILE MENU -->
<!-- <div *ngIf="isMobileMenu()"> -->
<div>
<!-- Search -->
<!-- <form class="navbar-form">
<span class="bmd-form-group">
<div class="input-group no-border">
<input type="text" value="" class="form-control" placeholder="Search...">
<button mat-raised-button type="submit" class="btn btn-white btn-round btn-just-icon">
<i class="material-icons">search</i>
<div class="ripple-container"></div>
</button>
</div>
</span>
</form> -->
<!-- Login -->
<ul class="nav navbar-nav nav-mobile-menu">
<li class="nav-item">
<a class="nav-link" *ngIf="isAuthenticated();else loginoption">
<p style="display: flex; align-items: center;" [routerLink]=" ['/profile']">
<img mat-card-avatar class="my-mat-card-avatar" [src]="this.getPrincipalAvatar()" (error)="applyFallbackAvatar($event)">
<!-- <img mat-card-avatar class="my-mat-card-avatar" *ngIf="!this.principalHasAvatar()" [src]="this.getDefaultAvatar()"> -->
<span class="d-lg-none d-md-block">{{ 'SIDE-BAR.ACCOUNT' | translate }}</span>
</p>
</a>
</li>
<li class="nav-item">
<a class="nav-link" *ngIf="isAuthenticated()" (click)="logout()">
<i class="material-icons">exit_to_app</i>
<p class="login-label">{{ 'USER-DIALOG.LOG-OUT' | translate }}</p>
</a>
</li>
<ng-template #loginoption>
<a class="nav-link login" *ngIf="!isLoginRouteActivated()" [routerLink]=" ['/login'] ">
<i class="material-icons">vpn_key</i>
<p class="login-label">{{ 'GENERAL.ACTIONS.LOG-IN' | translate }}</p>
</a>
</ng-template>
<li class="nav-item" *ngIf="!(isAuthenticated() && onInvalidUrl())">
<a class="nav-link" [routerLink]=" this.router.url " (click)="openLanguageDialog($event)">
<i class="material-icons">language</i>
<p class="login-label">{{ 'GENERAL.TITLES.LANGUAGE' | translate }}</p>
</a>
</li>
</ul>
</div>
<!-- END OF MOBILE MENU -->
<!-- Sidebar Menu -->
<ul class="nav" *ngFor="let groupMenuItem of groupMenuItems; last as isLast; first as isFirst;"
[class.nav-list-item]="showItem(groupMenuItem)">
<mat-list class="nav mat-list" *ngFor="let groupMenuItem of groupMenuItems; let firstGroup = first; let i = index" [class.nav-list-item]="showItem(groupMenuItem)" [ngClass]="{'flex-grow-1': i == groupMenuItems.length - 2}">
<div *ngIf="showItem(groupMenuItem);">
<hr *ngIf="!isFirst">
<div *ngIf="isFirst" class="sidebarSubtitle firstSubtitle">
<p>{{groupMenuItem.title | translate}}</p>
</div>
<div *ngIf="!isFirst" class="sidebarSubtitle">
<p>{{groupMenuItem.title | translate}}</p>
</div>
<li routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" *ngFor="let groupMenuRoute of groupMenuItem.routes"
class="nav-item">
<a class="nav-link" [routerLink]="[groupMenuRoute.path]">
<i *ngIf="isFirst" class="material-icons">{{ groupMenuRoute.icon }}</i>
<i *ngIf="!isFirst" class="material-icons-outlined">{{ groupMenuRoute.icon }}</i>
<p>{{groupMenuRoute.title | translate}}</p>
<hr *ngIf="!firstGroup">
<mat-list-item routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" *ngFor="let groupMenuRoute of groupMenuItem.routes; let first = first" class="nav-item"
[ngClass]="{'mt-4': first && firstGroup}">
<a class="nav-link nav-row" [routerLink]="[groupMenuRoute.path]">
<i class="material-icons icon">{{ groupMenuRoute.icon }}</i>
<i *ngIf="groupMenuRoute.path == '/plans' || groupMenuRoute.path == '/datasets'" class="material-icons icon-mask">person</i>
<span [ngClass]="{'pl-0': groupMenuRoute.path == '/plans' || groupMenuRoute.path == '/datasets'}">{{groupMenuRoute.title | translate}}</span>
</a>
</li>
</mat-list-item>
</div>
</ul>
</mat-list>
<!-- Sidebar Footer -->
<div class="sidebar-footer">
<div class="sidebar-footer pb-2">
<hr>
<app-sidebar-footer></app-sidebar-footer>
</div>
</div>

View File

@ -23,3 +23,16 @@ $mat-card-header-size: 30px !default;
.firstSubtitle {
margin-top: 20px;
}
.icon-mask {
color: #6b6b6b;
transform: translate(-8px, 8px);
}
.active a{
font-weight: 700;
}
.active a i{
color: #23BCBA;
}

View File

@ -23,24 +23,23 @@ declare interface GroupMenuItem {
}
export const GENERAL_ROUTES: RouteInfo[] = [
{ path: '/home', title: 'SIDE-BAR.DASHBOARD', icon: 'dashboard' },
{ path: '/about', title: 'SIDE-BAR.ABOUT', icon: 'info_outline' }
{ path: '/home', title: 'SIDE-BAR.DASHBOARD', icon: 'home' }
];
export const DMP_ROUTES: RouteInfo[] = [
{ path: '/plans', title: 'SIDE-BAR.MY-DMPS', icon: 'view_agenda' },
{ path: '/explore-plans', title: 'SIDE-BAR.PUBLIC-DMPS', icon: 'public' },
{ path: '/quick-wizard', title: 'SIDE-BAR.QUICK-WIZARD', icon: 'play_circle_outline' },
{ path: '/plans/new', title: 'SIDE-BAR.ADD-EXPERT', icon: 'playlist_add' }
{ path: '/plans', title: 'SIDE-BAR.MY-DMPS', icon: 'library_books' },
{ path: '/datasets', title: 'SIDE-BAR.MY-DATASET-DESC', icon: 'dns' },
// { path: '/quick-wizard', title: 'SIDE-BAR.QUICK-WIZARD', icon: 'play_circle_outline' },
// { path: '/plans/new', title: 'SIDE-BAR.ADD-EXPERT', icon: 'playlist_add' }
];
export const DATASETS_ROUTES: RouteInfo[] = [
{ path: '/datasets', title: 'SIDE-BAR.MY-DATASET-DESC', icon: 'library_books' },
{ path: '/explore', title: 'SIDE-BAR.PUBLIC-DESC', icon: 'public' },
{ path: '/datasetcreatewizard', title: 'SIDE-BAR.QUICK-WIZARD-DATASET', icon: "play_circle_outline" },
{ path: '/explore-plans', title: 'SIDE-BAR.PUBLIC-DMPS', icon: 'library_books' },
{ path: '/explore', title: 'SIDE-BAR.PUBLIC-DESC', icon: 'dns' },
// { path: '/datasetcreatewizard', title: 'SIDE-BAR.QUICK-WIZARD-DATASET', icon: "play_circle_outline" },
];
export const PUBLIC_ROUTES: RouteInfo[] = [
{ path: '/explore-plans', title: 'SIDE-BAR.PUBLIC-DMPS', icon: 'public' },
{ path: '/explore', title: 'SIDE-BAR.PUBLIC-DESC', icon: 'public' }
{ path: '/explore-plans', title: 'SIDE-BAR.PUBLIC-DMPS', icon: 'library_books' },
{ path: '/explore', title: 'SIDE-BAR.PUBLIC-DESC', icon: 'dns' }
];
// export const GRANTS_ROUTES: RouteInfo[] = [
@ -54,6 +53,13 @@ export const ADMIN_ROUTES: RouteInfo[] = [
{ path: '/language-editor', title: 'SIDE-BAR.LANGUAGE-EDITOR', icon: 'language' },
{ path: '/user-guide-editor', title: 'SIDE-BAR.GUIDE-EDITOR', icon: 'import_contacts' }
];
export const INFO_ROUTES: RouteInfo[] = [
{ path: '/about', title: 'SIDE-BAR.CO-BRANDING', icon: 'toll' },
{ path: '/about', title: 'SIDE-BAR.SUPPORT', icon: 'help' },
{ path: '/about', title: 'SIDE-BAR.FEEDBACK', icon: 'feedback' }
];
// export const HISTORY_ROUTES: RouteInfo[] = [
// { path: '/typography', title: 'SIDE-BAR.HISTORY-VISITED', icon: 'visibility'},
// { path: '/icons', title: 'SIDE-BAR.HISTORY-EDITED', icon: 'edit'}
@ -72,6 +78,7 @@ export class SidebarComponent implements OnInit {
datasetItems: GroupMenuItem;
grantItems: GroupMenuItem;
publicItems: GroupMenuItem;
infoItems: GroupMenuItem;
groupMenuItems: GroupMenuItem[] = [];
private toggleButton: any;
currentRoute: string;
@ -142,6 +149,15 @@ export class SidebarComponent implements OnInit {
}
this.groupMenuItems.push(this.publicItems);
this.infoItems = {
title: "",
routes: INFO_ROUTES,
requiresAuthentication: false,
requiresAdmin: false,
isGeneral: false
}
this.groupMenuItems.push(this.infoItems);
this.router.events.subscribe((event) => this.currentRoute = this.router.url);
// this.historyItems = {

View File

@ -47,7 +47,7 @@ h6 {
height: 100%;
width: 100%;
display: block;
top: 0;
top: 80px;
left: 0;
background-size: cover;
background-position: center center;
@ -340,6 +340,7 @@ table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .
height: 100%;
content: "";
display: block;
top: 80px;
background: rgba(0, 0, 0, 0.55);
opacity: .93;
}
@ -354,3 +355,325 @@ table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .
.attach-file :hover {
color: #00b29f
}
.normal-btn {
min-width: 162px;
max-width: 256px;
height: 40px;
cursor: pointer;
background: #129d99 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #1e202029;
border-radius: 30px;
border: none;
color: #ffffff;
opacity: 1;
line-height: 1;
font-size: 0.87rem;
padding: 0.62rem 1.87rem;
}
button:focus {
outline: none !important;
}
/* input[type=text], select {
width: 100%;
height: 56px;
padding: 16px;
background: #FAFAFA 0% 0% no-repeat padding-box;
border: 1px solid #D1D1D1;
border-radius: 4px;
opacity: 1;
} */
input[type=email], select {
width: 100%;
height: 56px;
padding: 16px;
background: #FAFAFA 0% 0% no-repeat padding-box;
border: 1px solid #D1D1D1;
border-radius: 4px;
opacity: 1;
}
textarea {
width: 100%;
height: 142px;
padding: 16px;
background: #FAFAFA 0% 0% no-repeat padding-box;
border: 1px solid #D1D1D1;
border-radius: 4px;
opacity: 1;
}
p {
text-align: left;
font-family: 'Roboto', sans-serif;
font-weight: 300;
font-size: 1.25rem;
letter-spacing: 0px;
color: #212121;
}
p a {
color: #23BCBA;
}
.bootstrap-overrides a {
text-decoration: none;
background-color: transparent;
}
.bootstrap-overrides a:hover {
color: #23BCBA;
text-decoration: none;
}
.bootstrap-overrides h1, .bootstrap-overrides h2, .bootstrap-overrides h3, .bootstrap-overrides h4, .bootstrap-overrides h5, .bootstrap-overrides h6, .caption, .placeholder, .body-text, .h1, .h2, .h3, .h4, .h5, .h6 {
font-family: 'Roboto', sans-serif;
color: #212121;
text-align: left;
}
.bootstrap-overrides h1, .h1 {
font-size: 3.3125rem;
line-height: 4rem;
font-weight: 300;
}
.bootstrap-overrides h2, .h2 {
font-size: 3.16rem;
line-height: 3.66rem;
font-weight: 300;
}
.bootstrap-overrides h3, .h3 {
font-size: 2.5rem;
line-height: 2.83rem;
font-weight: 700;
}
.bootstrap-overrides h4, .h4 {
font-size: 1.66rem;
line-height: 1.2;
font-weight: 700;
}
.bootstrap-overrides h5, .h5 {
font-size: 1.33rem;
line-height: 2.16rem;
font-weight: 300;
}
.bootstrap-overrides h6, .h6 {
font-size: 1.66rem;
line-height: 1.2;
font-weight: 300;
}
.caption {
font-size: 1rem;
line-height: 1.66rem;
font-weight: 300;
}
.placeholder {
font-size: 1.33rem;
line-height: 1.83rem;
font-weight: 300;
}
.title-1 {
text-align: left;
font-size: 2.37rem;
line-height: 2.75rem;
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: #FFFFFF;
}
.title-2 {
text-align: left;
font-size: 2.37rem;
line-height: 2.75rem;
font-family: 'Roboto', sans-serif;
font-weight: 700;
color: #FFFFFF;
}
.title-3 {
text-align: left;
font-size: 2.37rem;
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: #212121;
opacity: 0.95;
}
.page-title {
text-align: center;
font-weight: 700;
font-size: 2.375rem;
font-family: 'Roboto', sans-serif;
letter-spacing: -0.95px;
color: #212121;
opacity: 1;
}
.page-subtitle {
text-align: left;
font-weight: 300;
font-size: 2.375rem;
font-family: 'Roboto', sans-serif;
letter-spacing: 0px;
color: #212121;
opacity: 1;
}
.body-text {
font-size: 1rem;
line-height: 1.6;
font-weight: 400;
opacity: 0.8;
}
hr {
margin-top: 1rem;
margin-bottom: 1rem;
border: 0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
}
.fixed-top {
position: fixed !important;
top: 0;
right: 0;
left: 0;
z-index: 1030;
}
.container, .container-small {
width: 100%;
padding-right: 0.75rem;
padding-left: 0.75rem;
margin-right: auto;
margin-left: auto;
z-index: 1;
}
.normal-btn {
min-width: 162px;
max-width: 256px;
height: 40px;
cursor: pointer;
background: #129D99 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #1E202029;
border-radius: 30px;
border: none;
color: #FFFFFF;
opacity: 1;
font-size: 0.87rem;
padding: 0.62rem 1.87rem;
}
.mirror {
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
}
.text-box {
width: 894px;
height: 221px;
background: #FFFFFF 0% 0% no-repeat padding-box;
border: 1px solid #23BCBA;
border-radius: 37px;
opacity: 1;
margin: 3.75rem 0rem;
padding: 3.37rem 4.37rem;
}
.collapse-box {
background: #FFFFFF 0% 0% no-repeat padding-box;
border: 1px solid #D1D1D1;
border-radius: 4px;
opacity: 1;
padding: 1.45rem 1.5rem;
margin: 1rem 0rem;
}
.collapse-title a {
text-align: left;
font-size: 1.25rem;
font-weight: 700;
font-family: 'Roboto', sans-serif;
letter-spacing: 0px;
color: #212121;
opacity: 0.76;
}
.collapse-title a:after {
content: '\f077';
font-family: "Font Awesome 5 Free" !important;
float: right;
font-size: 1rem;
font-weight: 900;
color: black;
}
.collapse-title a.collapsed:after {
content: '\f078';
font-family: "Font Awesome 5 Free";
font-weight: 900;
color: black;
}
.collapse:not(.show) {
display: none;
}
.faq-content {
text-align: left;
font-weight: 400;
font-size: 1rem;
font-family: 'Roboto', sans-serif;
letter-spacing: 0px;
color: #212121;
opacity: 0.8;
padding-top: 1.5rem;
}
.fa-download {
color: #212121;
opacity: 0.8;
padding-right: .5rem;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
.margin-right-6 {
margin-left: 5.8rem;
}
}
@media (min-width: 1244px) {
.container {
max-width: 1204px !important;
}
.container-small {
max-width: 900px;
}
}

View File

@ -205,21 +205,24 @@
"QUICK-WIZARD": "New DMP (Wizard)",
"QUICK-WIZARD-DATASET": "Add Dataset Description (Wizard)",
"ADD-EXPERT": "New DMP (Expert)",
"MY-DATASET-DESC": "My Dataset Descriptions",
"MY-DATASET-DESC": "My Dataset Desc.",
"MY-GRANTS": "My Grants",
"HISTORY": "HISTORY",
"HISTORY-VISITED": "LAST VISITED",
"HISTORY-EDITED": "LAST EDITED",
"PUBLIC": "PUBLISHED",
"PUBLIC-DMPS": "Published DMPs",
"PUBLIC-DESC": "Published Dataset Descriptions",
"PUBLIC-DMPS": "Public DMPs",
"PUBLIC-DESC": "Public Dataset Desc.",
"ACCOUNT": "ACCOUNT",
"ADMIN": "ADMIN",
"DATASET-TEMPLATES": "Dataset Description Templates",
"DMP-TEMPLATES": "DMP Templates",
"USERS": "Users",
"LANGUAGE-EDITOR": "Language Editor",
"GUIDE-EDITOR": "User Guide Editor"
"GUIDE-EDITOR": "User Guide Editor",
"CO-BRANDING": "Co-Branding",
"SUPPORT": "Support",
"FEEDBACK": "Send feedback"
},
"DATASET-PROFILE-EDITOR": {
"TITLE": {
@ -381,6 +384,7 @@
}
},
"DMP-LISTING": {
"DMP": "DMP",
"TITLE": "Data Management Plans",
"OWNER": "Owner",
"MEMBER": "Member",
@ -1040,7 +1044,8 @@
"GUIDE": "User Guide",
"GLOSSARY": "Glossary",
"TERMS-OF-SERVICE": "Terms Of Service",
"PRIVACY-POLICY": "Privacy Policy"
"PRIVACY-POLICY": "Privacy Policy",
"ABOUT": "About"
},
"GLOSSARY": {
"TITLE": "Glossary",

View File

@ -219,7 +219,10 @@
"DMP-TEMPLATES": "Plantillas del PGD",
"USERS": "Usuarios",
"LANGUAGE-EDITOR":"Language Editor",
"GUIDE-EDITOR": "User Guide Editor"
"GUIDE-EDITOR": "User Guide Editor",
"CO-BRANDING": "Marca Compartida",
"SUPPORT": "Apoyo",
"FEEDBACK": "Enviar comentarios"
},
"DATASET-PROFILE-EDITOR": {
"TITLE": {
@ -381,6 +384,7 @@
}
},
"DMP-LISTING": {
"DMP": "DMP",
"TITLE": "Planes de Gestión de Datos",
"OWNER": "Propietario",
"MEMBER": "Miembro",
@ -1031,7 +1035,8 @@
"GUIDE": "User Guide",
"GLOSSARY": "Glosario",
"TERMS-OF-SERVICE": "Términos del servicio",
"PRIVACY-POLICY": "Política de privacidad"
"PRIVACY-POLICY": "Política de privacidad",
"ABOUT": "Acerca de"
},
"GLOSSARY": {
"TITLE": "Glosario",

View File

@ -219,7 +219,10 @@
"DMP-TEMPLATES": "Templates Σχεδίων Διαχείρισης Δεδομένων",
"USERS": "Users",
"LANGUAGE-EDITOR": "Επεξεργαστής Γλώσσας",
"GUIDE-EDITOR": "Οδηγός Χρήστη"
"GUIDE-EDITOR": "Οδηγός Χρήστη",
"CO-BRANDING": "Co-Branding",
"SUPPORT": "Υποστήριξη",
"FEEDBACK": "Στείλετε τα σχόλιά σας"
},
"DATASET-PROFILE-EDITOR": {
"TITLE": {
@ -381,6 +384,7 @@
}
},
"DMP-LISTING": {
"DMP": "DMP",
"TITLE": "Σχέδια Διαχείρισης Δεδομένων",
"OWNER": "Κάτοχος",
"MEMBER": "Μέλος",
@ -1018,7 +1022,8 @@
"GUIDE": "Οδηγός Χρήστη",
"GLOSSARY": "Γλωσσάριο",
"TERMS-OF-SERVICE": "Όροι Χρήσης",
"PRIVACY-POLICY": "Πολιτική Απορρήτου"
"PRIVACY-POLICY": "Πολιτική Απορρήτου",
"ABOUT": "Σχετικά με το Argos"
},
"GLOSSARY": {
"TITLE": "Γλωσσάριο",

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -412,7 +412,8 @@
box-shadow: none;
.sidebar-wrapper{
// padding-bottom: 60px;
// padding-bottom: 60px;
top: 80px;
}
.nav-mobile-menu{
@ -821,9 +822,9 @@
display: none;
}
}
.navbar {
width: calc(100% - 260px);
}
// .navbar {
// width: calc(100% - 260px);
// }
}
.nav-mobile-menu,

View File

@ -51,7 +51,8 @@
z-index: 4;
// padding-bottom: 10px;
display: flex;
flex-direction: column;
flex-direction: column;
top: 80px;
.dropdown .dropdown-backdrop {
display: none !important;
@ -421,6 +422,10 @@
-webkit-transition-timing-function: linear, linear, ease;
transition-timing-function: linear, linear, ease;
-webkit-overflow-scrolling: touch;
height: 100%;
display: flex;
flex-direction: column;
}
.visible-on-sidebar-regular {
@ -441,7 +446,8 @@
.sidebar,
.sidebar .sidebar-wrapper {
width: 80px;
width: 80px;
top: 80px;
}
.main-panel {

View File

@ -0,0 +1,63 @@
<div class="d-flex justify-content-center">
<img src="../../../assets/splash/assets/img/argos-logo.svg" width="135" height="51">
</div>
<span class="row justify-content-center">Login with</span>
<div class="login-card">
<div *ngIf="hasGoogleOauth()" class="row social-btns">
<div class="col-auto p-0">
<button mat-icon-button id="googleSignInButton" class="login-social-button">
<i class="fa fa-google" (click)="close()"></i>
</button>
<!-- <div id="googleSignInButton">
<img src="../../../assets/images/argos-login/NoPath - Copy (2).png" width="47" height="47">
</div> -->
</div>
<div *ngIf="hasLinkedInOauth()" class="col-auto p-0">
<button mat-icon-button class="login-social-button">
<i class="fa fa-linkedin" (click)="linkedInLogin(); close()"></i>
</button>
</div>
<div *ngIf="hasFacebookOauth()" class="col-auto p-0">
<button mat-icon-button (click)="facebookLogin(); close()" class="login-social-button">
<i class="fa fa-facebook-square"></i>
</button>
</div>
<div *ngIf="hasTwitterOauth()" class="col-auto p-0">
<button mat-icon-button (click)="twitterLogin(); close()" class="login-social-button">
<i class="fa fa-twitter"></i>
</button>
</div>
</div>
<div class="w-100"></div>
<div class="row pt-2 mb-4 accesss-methods">
<div *ngIf="hasB2AccessOauth()" class="col-auto logo">
<button class="b2access-button" mat-icon-button (click)="b2AccessLogin(); close()" class="login-social-button">
<span class="iconmedium"></span>
</button>
</div>
<div *ngIf="hasOrcidOauth()" class="col-auto orcid-logo">
<button class="orcid-button" mat-icon-button (click)="orcidLogin(); close()" class="login-social-button">
<span class="orcidIconMedium"></span>
</button>
</div>
<div *ngIf="hasOpenAireOauth()" class="col-auto openaire-logo">
<button class="openaire-button" mat-icon-button (click)="openaireLogin(); close()" class="login-social-button">
<span class="openaireIcon"></span>
</button>
</div>
</div>
<div *ngIf="hasConfigurableProviders()" class="row pt-2 mb-4 accesss-methods">
<div *ngFor="let provider of this.configurableProviderService.providers" class="col-auto configurable-logo">
<button mat-icon-button class="configurable-button" (click)="configurableLogin(provider)"
class="login-social-button">
<span class="configurableIcon">{{provider.name}}</span>
</button>
</div>
</div>
<div *ngIf="hasZenodoOauth()" class="col-auto zenodo-logo">
<button class="zenodo-button" mat-icon-button (click)="zenodoLogin(); close()" class="login-social-button">
<span class="zenodoIcon"></span>
</button>
</div>
</div>

View File

@ -0,0 +1,331 @@
.login-screen {
margin-top: 70px;
min-height: calc(100vh - 10px);
}
.login-card {
width: auto;
margin-top: 0;
}
.container {
padding: 15px 30px;
}
.card {
box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);
border-radius: 6px;
color: rgba(0, 0, 0, 0.87);
background: #fff;
}
.card-raised {
box-shadow: 0 10px 30px -12px rgba(0, 0, 0, 0.42), 0 4px 25px 0px rgba(0, 0, 0, 0.12),
0 8px 10px -5px rgba(0, 0, 0, 0.2);
}
.page-title {
margin-top: 40px;
}
.container {
height: 100%;
position: relative;
z-index: 1;
}
@-webkit-keyframes card {
from {
top: -40px;
}
to {
top: 0;
}
}
@keyframes card {
from {
top: -40px;
}
to {
top: 0;
}
}
.card {
position: relative;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 50px;
top: -50px;
-webkit-animation-name: card;
-moz-animation-name: card;
-o-animation-name: card;
animation-name: card;
-webkit-animation-duration: 600ms;
-moz-animation-duration: 600ms;
-o-animation-duration: 600ms;
animation-duration: 600ms;
-webkit-animation-fill-mode: forwards;
-moz-animation-fill-mode: forwards;
-o-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
.card-header {
position: relative;
overflow: hidden;
top: -50px;
width: 100%;
min-height: 200px;
padding: 25px;
border-radius: 3px;
background: #0c7489;
// background: rgb(0, 112, 192);
display: flex;
flex-direction: column;
align-items: center;
}
.card-header h4 {
font-weight: 400;
color: #fff;
margin-bottom: 25px;
margin-top: 5px;
}
.social-btns {
justify-content: center;
}
.social-btns i {
font-size: 2.5em;
padding: 0.7em;
color: #767676;
}
.social-btns .col {
flex-grow: 0;
}
.social-btns i:hover {
background-color: #f5f5f51c;
border-radius: 60%;
}
.accesss-methods {
height: 5em;
justify-content: center;
}
.accesss-methods .col-auto:hover {
background-color: #f5f5f51c;
border-radius: 100%;
}
.accesss-methods .logo {
flex-grow: 0;
padding-top: 21px;
padding-bottom: 21px;
}
.accesss-methods .openaire-logo {
flex-grow: 0;
padding-top: 21px;
padding-bottom: 21px;
margin-top: 5px;
height: 90px;
}
.accesss-methods .orcid-logo {
height: 75px;
padding-top: 8px;
margin-top: 13px;
}
.accesss-methods .configurable-logo {
flex-grow: 0;
padding-top: 21px;
padding-bottom: 21px;
margin-top: 5px;
height: 90px;
}
.accesss-methods .zenodo-logo {
height: 75px;
padding-top: 8px;
margin-top: 13px;
}
.tip {
margin-top: -20px;
}
.form-row,
.card-form,
.mat-form-field {
width: 100%;
}
.card-form {
padding: 5px;
}
.form-row {
position: relative;
display: flex;
align-items: center;
margin-top: 13px;
}
.form-row i {
position: relative;
top: -5px;
margin-right: 15px;
color: #555;
}
.card-footer {
padding: 0;
border-radius: 0;
align-items: start;
flex-direction: column;
}
.card-footer button {
color: #e91e63;
}
.btn span.icon {
background: url(../../../app/ui/auth/login/img/b2access_small.png) no-repeat;
float: left;
width: 45px;
height: 25px;
}
span.iconmedium {
background: url(../../../app/ui/auth/login/img/b2access_medium.png) no-repeat;
float: left;
width: 100px;
height: 56px;
}
span.orcidIconMedium {
background: url(../../../app/ui/auth/login/img/ORCIDiD_medium.png) no-repeat;
background-position: center;
float: right;
width: 56px;
height: 56px;
}
span.openaireIcon {
background: url(../../../app/ui/auth/login/img/openaire_small.png) no-repeat;
background-position: center;
float: right;
width: 80px;
height: 56px;
}
span.configurableIcon {
float: right;
width: 80px;
height: 56px;
}
span.zenodoIcon {
background: url(../../../app/ui/auth/login/img/zenodo-white-200.png) no-repeat 100px 56px;
background-position: center;
float: right;
width: 150px;
height: 56px;
}
.b2access-button {
margin-top: 10px;
width: fit-content;
}
.orcid-button {
margin-top: 10px;
width: fit-content;
}
.openaire-button {
margin-top: 10px;
width: fit-content;
}
.configurable-button {
margin-top: 10px;
width: fit-content;
}
.zenodo-button {
margin-top: 10px;
width: fit-content;
}
.login-logo {
background: url(../../../app/ui/auth/login/img/open-dmp.png) no-repeat;
width: 273px;
height: 300px;
background-size: cover;
}
.login-bg {
background: url(../../../app/ui/auth/login/img/login_bg.png) no-repeat;
background-size: cover;
}
.login-social-button {
width: auto;
height: auto;
color: rgba(0, 0, 0, 0.14);
}
.login-sub {
color: #B8B8B8;
}
@media (min-width: 1200px) {
.container {
width: 100%;
}
}
@media (min-width: 992px) {
.container {
width: 100%;
}
}
@media (min-width: 768px) {
.container {
width: 100%;
}
}
@media (min-width: 401px) and (max-width: 560px) {
.social-btns i {
padding: 0.4em !important;
}
.accesss-methods {
padding-top: 1em;
}
}
@media (min-width: 0px) and (max-width: 400px) {
.social-btns i {
padding: 0.4em !important;
}
.card-header {
height: 350px !important;
}
.accesss-methods {
padding-top: 1em;
}
}

View File

@ -0,0 +1,224 @@
import { Component, Inject, AfterViewInit, OnInit } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { ConfigurableProvidersService } from '@app/ui/auth/login/utilities/configurableProviders.service';
import { LoginService } from '@app/ui/auth/login/utilities/login.service';
import { AuthService } from '@app/core/services/auth/auth.service';
import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { BaseComponent } from '@common/base/base.component';
import { AuthProvider } from '@app/core/common/enum/auth-provider';
import { ConfigurableProvider } from '@app/core/model/configurable-provider/configurableProvider';
import { takeUntil } from 'rxjs/operators';
/// <reference types="gapi" />
/// <reference types="facebook-js-sdk" />
declare const gapi: any;
declare const FB: any;
@Component({
selector: 'app-sign-in-dialog',
templateUrl: './sign-in-dialog.component.html',
styleUrls: ['./sign-in-dialog.component.scss']
})
export class SignInDialogComponent extends BaseComponent implements OnInit, AfterViewInit {
agreePrivacyPolicyNames = false;
public auth2: any;
private returnUrl: string;
//public cofigurableProviders: ConfigurableProvider[];
constructor(
public dialogRef: MatDialogRef<SignInDialogComponent>,
@Inject(MAT_DIALOG_DATA) public data: any,
private router: Router,
private route: ActivatedRoute,
private loginService: LoginService,
private authService: AuthService,
public configurableProviderService: ConfigurableProvidersService,
private configurationService: ConfigurationService
) {
super();
}
close() {
this.dialogRef.close(false);
}
// cancel() {
// this.dialogRef.close(false);
// }
// confirm() {
// this.dialogRef.close(true);
// }
ngOnInit(): void {
this.route.queryParams
.pipe(takeUntil(this._destroyed))
.subscribe((params: Params) => {
const returnUrl = params['returnUrl'];
if (returnUrl) { this.returnUrl = returnUrl; }
});
this.authService.getConfigurableProviders()
.pipe(takeUntil(this._destroyed))
.subscribe((data: any) => {
this.configurableProviderService.providers = data;
})
}
ngAfterViewInit() {
this.initProviders();
}
public linkedInLogin() {
this.router.navigate(['/login/linkedin']);
}
public twitterLogin() {
this.router.navigate(['/login/twitter']);
}
public b2AccessLogin() {
this.router.navigate(['/login/external/b2access']);
}
public orcidLogin() {
this.router.navigate(['/login/external/orcid']);
}
public openaireLogin() {
this.router.navigate(['/login/openaire']);
}
public configurableLogin(provider: ConfigurableProvider) {
this.router.navigate(['/login/configurable/' + provider.configurableLoginId])
}
public zenodoLogin() {
this.router.navigate(['/login/external/zenodo']);
}
public hasFacebookOauth(): boolean {
return this.hasProvider(AuthProvider.Facebook);
}
public hasLinkedInOauth(): boolean {
return this.hasProvider(AuthProvider.LinkedIn);
}
public hasTwitterOauth(): boolean {
return this.hasProvider(AuthProvider.Twitter);
}
public hasGoogleOauth(): boolean {
return this.hasProvider(AuthProvider.Google);
}
public hasB2AccessOauth(): boolean {
return this.hasProvider(AuthProvider.B2Access);
}
public hasOrcidOauth(): boolean {
return this.hasProvider(AuthProvider.ORCID);
}
public hasOpenAireOauth(): boolean {
return this.hasProvider(AuthProvider.OpenAire);
}
public hasZenodoOauth(): boolean {
return this.hasProvider(AuthProvider.Zenodo);
}
public initProviders() {
if (this.hasProvider(AuthProvider.Google)) { this.initializeGoogleOauth(); }
if (this.hasProvider(AuthProvider.Facebook)) { this.initializeFacebookOauth(); }
}
public hasProvider(provider: AuthProvider) {
for (let i = 0; i < this.configurationService.loginProviders.enabled.length; i++) {
if (provider === this.configurationService.loginProviders.enabled[i]) { return this.isProviderProperlyConfigured(provider); }
}
return false;
}
private isProviderProperlyConfigured(provider: AuthProvider) {
switch (provider) {
case AuthProvider.Facebook: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.facebookConfiguration);
case AuthProvider.Google: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.googleConfiguration);
case AuthProvider.LinkedIn: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.linkedInConfiguration);
case AuthProvider.Twitter: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.twitterConfiguration);
case AuthProvider.B2Access: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.b2accessConfiguration);
case AuthProvider.ORCID: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.orcidConfiguration);
case AuthProvider.OpenAire: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.openAireConfiguration);
case AuthProvider.Zenodo: return this.hasAllRequiredFieldsConfigured(this.configurationService.loginProviders.zenodoConfiguration);
default: throw new Error('Unsupported Provider Type');
}
}
private hasAllRequiredFieldsConfigured(configuration: any) {
if (configuration != null && configuration.clientId != null) { return true; }
return false;
}
/*
* GOOGLE SIGN IN
*/
private initializeGoogleOauth(): void {
gapi.load('auth2', () => {
this.auth2 = gapi.auth2.init({
client_id: this.configurationService.loginProviders.googleConfiguration.clientId,
scope: 'profile email'
});
this.attachGoogleSignΙn(document.getElementById('googleSignInButton'));
});
}
public attachGoogleSignΙn(element) {
if (!element) { return; }
this.auth2.attachClickHandler(element, {},
(googleUser) => {
const id_token = googleUser.getAuthResponse().id_token;
if (id_token) {
this.authService.login({ ticket: id_token, provider: AuthProvider.Google })
.pipe(takeUntil(this._destroyed))
.subscribe(
res => this.loginService.onLogInSuccess(res, this.returnUrl),
error => this.loginService.onLogInError(error)
);
}
}, (error) => {
});
}
/*
* FACEBOOK SIGN IN
*/
private initializeFacebookOauth(): void {
FB.init({
appId: this.configurationService.loginProviders.facebookConfiguration.clientId,
cookie: false,
xfbml: true,
version: 'v2.8'
});
}
public facebookLogin() {
FB.login((response: any) => {
if (response.status === 'connected' || 'not_authorized') {
this.authService.login({ ticket: response.authResponse.accessToken, provider: AuthProvider.Facebook })
.pipe(takeUntil(this._destroyed))
.subscribe(
res => this.loginService.onLogInSuccess(res, this.returnUrl),
error => this.loginService.onLogInError(error)
);
}
}, { scope: 'email' });
}
public hasConfigurableProviders(): boolean {
return !(this.configurableProviderService.providers == undefined) && this.configurableProviderService.providers.length > 0
}
}

View File

@ -0,0 +1,14 @@
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonUiModule } from '@common/ui/common-ui.module';
import { SignInDialogComponent } from './sign-in-dialog.component';
@NgModule({
imports: [CommonUiModule, FormsModule],
declarations: [SignInDialogComponent],
exports: [SignInDialogComponent],
entryComponents: [SignInDialogComponent]
})
export class SignInDialogModule {
constructor() { }
}

View File

@ -18,144 +18,155 @@
// @include covalent-theme($theme);
.snackbar-warning {
background-color: #f39010;
color: #f3efef;
background-color: #f39010;
color: #f3efef;
}
.snackbar-success {
background-color: #109204;
color: #f3efef;
background-color: #109204;
color: #f3efef;
}
.snackbar-error {
background-color: #cf1407;
color: #111010;
background-color: #cf1407;
color: #111010;
}
.lightblue-btn {
background-color: rgb(0, 178, 159) !important;
color: white !important;
// background-color: rgba(0, 112, 192, 1) !important;
background-color: rgb(0, 178, 159) !important;
color: white !important;
// background-color: rgba(0, 112, 192, 1) !important;
}
.listing-item {
margin-top: 0.5em;
padding: 0.5em;
cursor: pointer;
border: 3px solid #f2f2f2;
margin-top: 0.5em;
padding: 0.5em;
cursor: pointer;
border: 3px solid #f2f2f2;
.title {
color: black;
}
.title {
color: black;
}
.grant-title {
color: rgb(93, 125, 173);
}
.grant-title {
color: rgb(93, 125, 173);
}
.gray-icon {
color: rgb(191, 191, 191);
}
.gray-icon {
color: rgb(191, 191, 191);
}
.chip {
padding: 0.1em 1em;
border-radius: 10em;
background-color: #0d7489;
// background-color: rgba(0, 112, 192, 1);
color: #fff;
text-transform: uppercase;
font-weight: 500;
max-width: 160px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.chip {
padding: 0.1em 1em;
border-radius: 10em;
background-color: #0d7489;
// background-color: rgba(0, 112, 192, 1);
color: #fff;
text-transform: uppercase;
font-weight: 500;
max-width: 160px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.bordered-chip {
padding: 0.1em 1em;
border: 0.1em solid rgb(218, 227, 243);
border-radius: 10em;
background-color: rgb(236, 241, 249);
color: rgb(0, 178, 159);
// color: rgba(0, 112, 192, 1);
// color: rgb(68, 114, 196);
text-transform: uppercase;
font-weight: 500;
max-width: 160px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.bordered-chip {
padding: 0.1em 1em;
border: 0.1em solid rgb(218, 227, 243);
border-radius: 10em;
background-color: rgb(236, 241, 249);
color: rgb(0, 178, 159);
// color: rgba(0, 112, 192, 1);
// color: rgb(68, 114, 196);
text-transform: uppercase;
font-weight: 500;
max-width: 160px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.squared-chip {
padding: 0.1em 1em;
border: 0.1em solid rgb(236, 241, 249);
border-radius: 0.5em;
background-color: rgb(246, 246, 246);
color: rgb(127, 127, 127);
max-width: 160px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.squared-chip {
padding: 0.1em 1em;
border: 0.1em solid rgb(236, 241, 249);
border-radius: 0.5em;
background-color: rgb(246, 246, 246);
color: rgb(127, 127, 127);
max-width: 160px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
mat-icon {
width: auto;
height: auto;
}
mat-icon {
width: auto;
height: auto;
}
.mr-5 {
margin-right: 2rem !important;
}
.mr-5 {
margin-right: 2rem !important;
}
.info {
background-color: #f6f6f6;
padding: 8px 15px;
margin-bottom: 15px;
}
.info {
background-color: #f6f6f6;
padding: 8px 15px;
margin-bottom: 15px;
}
.info p {
margin-bottom: 0px;
color: rgb(37, 35, 140);
font-weight: 600;
}
.info p {
margin-bottom: 0px;
color: rgb(37, 35, 140);
font-weight: 600;
}
.chip p {
margin-bottom: 0px;
}
.chip p {
margin-bottom: 0px;
}
// .draft-bookmark {
// color: #e7e6e6;
// display: inline;
// position: absolute;
// padding-top: 3px;
// }
// .draft-bookmark {
// color: #e7e6e6;
// display: inline;
// position: absolute;
// padding-top: 3px;
// }
// .finalized-bookmark {
// color: #08bd63;
// // color: #92d050;
// display: inline;
// position: absolute;
// padding-top: 3px;
// }
// .finalized-bookmark {
// color: #08bd63;
// // color: #92d050;
// display: inline;
// position: absolute;
// padding-top: 3px;
// }
h4 span {
color: #089dbb;
font-weight: 600;
}
h4 span {
color: #089dbb;
font-weight: 600;
}
}
.listing {
.mat-card {
margin: 1em 0;
}
.mat-card {
margin: 1em 0;
}
.col-9 {
display: flex;
flex-direction: column;
}
.col-9 {
display: flex;
flex-direction: column;
}
}
.gray-container {
background: linear-gradient(180deg, #f6f6f6, #fff);
margin: 5px 0px;
background: linear-gradient(180deg, #f6f6f6, #fff);
margin: 5px 0px;
}
.main-content {
background-color: #f5f5f5;
padding-top: 3.68rem;
padding-bottom: 10rem;
// padding-left: 3.31rem;
padding-left: 1rem;
margin: 0;
display: flex;
flex-grow: 1;
}