Skip to content

Commit 3dc59fe

Browse files
authored
Merge pull request #596 from DigitalExcellence/develop
Release v.1.8.0-beta - 11-4-2021
2 parents 76d0802 + 66c7f30 commit 3dc59fe

35 files changed

+653
-59
lines changed

.idea/codeStyles/Project.xml

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.vscode/launch.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
"type": "chrome",
99
"request": "attach",
1010
"name": "Attach to Chrome localhost",
11-
"port": 9222,
11+
"port": 4200,
1212
"webRoot": "${workspaceFolder}"
1313
}
1414
]
15-
}
15+
}

CHANGELOG.md

+22-3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,31 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres
66
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## Release v.1.8.0-beta - []
9+
10+
### Added
11+
12+
### Changed
13+
14+
### Deprecated
15+
16+
### Removed
17+
18+
### Fixed
19+
- Fixed pagination project overview - [#564](https://github.com/DigitalExcellence/dex-frontend/issues/564)
20+
- Added a close button onto the add project modal, ignore background click - [#558](https://github.com/DigitalExcellence/dex-frontend/issues/558)
21+
- Fixed input being lost upon session timeout - [#559](https://github.com/DigitalExcellence/dex-frontend/issues/559)
22+
- Fixed the navbar for longer names, adjusted the loading animation to be smooth. - [#593](https://github.com/DigitalExcellence/dex-frontend/issues/593)
23+
24+
### Security
25+
826
## Release v.1.7.0-beta - 8-10-2021
927

1028
### Added
11-
- Added pagination to own projects page. [#526](https://github.com/DigitalExcellence/dex-frontend/issues/526)
29+
- Pagination to own projects page. [#526](https://github.com/DigitalExcellence/dex-frontend/issues/526)
1230
- Back button to add project wizard - [#563](https://github.com/DigitalExcellence/dex-frontend/issues/563)
13-
- Fixed the wizard long description text area to wrap words. - [#562](https://github.com/DigitalExcellence/dex-frontend/issues/562)
31+
- Frontend implementation of transfer project ownership - [#581](https://github.com/DigitalExcellence/dex-frontend/issues/581)
32+
- Option to remove a previously uploaded icon to edit page and wizard[#482](https://github.com/DigitalExcellence/dex-frontend/issues/482)
1433

1534
### Changed
1635
- Projects overview not sorting on Likes High > Low [#557](https://github.com/DigitalExcellence/dex-frontend/issues/557)
@@ -23,7 +42,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2342
### Fixed
2443
- Highlight project modal, not dissapearing when clicking out of it.[#569](https://github.com/DigitalExcellence/dex-frontend/issues/569)
2544
- Project filter is not cleared anymore after editing project. [#561](https://github.com/DigitalExcellence/dex-frontend/issues/561)
26-
- Added option to remove a previously uploaded icon to edit page and wizard[#482](https://github.com/DigitalExcellence/dex-frontend/issues/482)
45+
- The wizard long description text area to wrap words. - [#562](https://github.com/DigitalExcellence/dex-frontend/issues/562)
2746

2847
### Security
2948

src/app/app.module.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ import { AppLayoutComponent } from './components/app-layout/app-layout.component
2121
import { AuthCallbackComponent } from './components/auth-callback/auth-callback.component';
2222
import { FooterComponent } from './components/footer/footer.component';
2323
import { ModalDeleteGenericComponent } from './components/modals/modal-delete-generic/modal-delete-generic.component';
24+
import { ModalInformationGenericComponent } from './components/modals/modal-information-generic/modal-information-generic.component';
25+
import { ModalPotentialNewOwnerUserEmailConfirmationComponent } from './components/modals/modal-potential-new-owner-user-email-confirmation/modal-potential-new-owner-user-email-confirmation.component';
26+
import { ModalPotentialNewOwnerUserEmailComponent } from './components/modals/modal-potential-new-owner-user-email/modal-potential-new-owner-user-email.component';
2427
import { NotFoundComponent } from './components/not-found/not-found.component';
2528
import { PrivacyPolicyComponent } from './components/privacy-policy/privacy-policy.component';
2629
import { SearchComponent } from './components/search/search.component';
@@ -29,6 +32,7 @@ import { TokenInterceptor } from './interceptors/auth.interceptor';
2932
import { HttpErrorInterceptor } from './interceptors/http.interceptor';
3033
import { HomeModule } from './modules/home/home.module';
3134
import { ProjectModule } from './modules/project/project.module';
35+
import { TransferOwnershipComponent } from './modules/project/transfer-ownership/transfer-ownership.component';
3236
import { SharedModule } from './modules/shared/shared.module';
3337

3438
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
@@ -41,7 +45,6 @@ import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
4145
import { ModalModule } from 'ngx-bootstrap/modal';
4246
import { QuillModule } from 'ngx-quill';
4347

44-
4548
@NgModule({
4649
declarations: [
4750
AppComponent,
@@ -52,7 +55,11 @@ import { QuillModule } from 'ngx-quill';
5255
PrivacyPolicyComponent,
5356
NotFoundComponent,
5457
ModalDeleteGenericComponent,
55-
SearchComponent
58+
SearchComponent,
59+
ModalPotentialNewOwnerUserEmailComponent,
60+
ModalPotentialNewOwnerUserEmailConfirmationComponent,
61+
TransferOwnershipComponent,
62+
ModalInformationGenericComponent
5663
],
5764
imports: [
5865
BsDropdownModule.forRoot(),

src/app/components/app-layout/app-layout.component.html

+7-6
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header *ngIf="!displayContentWithoutLayout" class="header header-6 navbar navbar-expand-md navbar-light">
2222
<div class="branding">
2323
<span class="title"
24-
><a aria-label="Back to the Homepage" routerLink=""><img alt="" loading="lazy" src="assets/images/dex-logo-dark-orange.png" /></a
24+
><a aria-label="Back to the Homepage" routerLink=""><img alt="" loading="lazy" src="assets/images/dex-logo-dark-orange.png"/></a
2525
></span>
2626
<p (click)="onClickHeaderBetaText()" class="beta-text">Beta</p>
2727
</div>
@@ -48,11 +48,12 @@
4848
<div *ngIf="isAuthenticated" class="profile">
4949
<div class="btn-group profile-dropdown w-100" dropdown>
5050
<button aria-controls="dropdown-basic" class="btn dropdown-toggle profile-dropdown" dropdownToggle id="button-basic" type="button">
51-
{{ name }} <img alt="" class="profile-picture" loading="lazy" src="assets/images/profile-placeholder.png" />
51+
<span class="profile-name">{{ name }}</span>
52+
<img alt="" class="profile-picture" loading="lazy" src="assets/images/profile-placeholder.png"/>
5253
<span class="caret"></span>
5354
</button>
5455
<ul *dropdownMenu aria-labelledby="button-basic" class="dropdown-menu" id="dropdown-basic" role="menu">
55-
<li role="menuitem"> <a class="dropdown-item" routerLink="user/projects">My Projects</a></li>
56+
<li role="menuitem"><a class="dropdown-item" routerLink="user/projects">My Projects</a></li>
5657
<li role="menuitem"><a (click)="onClickSignout()" class="dropdown-item">Sign Out</a></li>
5758

5859
</ul>
@@ -93,10 +94,10 @@
9394
</div>
9495

9596
<svg class="background" viewBox="0 0 355.4 374.9" xmlns="http://www.w3.org/2000/svg">
96-
<polygon fill="#e85b3f" points="240.9 166 347.7 0 245.2 0 188.7 92.5 240.9 166" />
97+
<polygon fill="#e85b3f" points="240.9 166 347.7 0 245.2 0 188.7 92.5 240.9 166"/>
9798
<polygon
98-
fill="#1d1d1b"
99-
points="230.9 181 215.8 159.8 112.1 0 5.3 0 122.1 185.3 0 374.9 108.3 374.9 176.7 258.7 246.2 374.9 355.4 374.9 230.9 181"
99+
fill="#1d1d1b"
100+
points="230.9 181 215.8 159.8 112.1 0 5.3 0 122.1 185.3 0 374.9 108.3 374.9 176.7 258.7 246.2 374.9 355.4 374.9 230.9 181"
100101
/>
101102
</svg>
102103

src/app/components/app-layout/app-layout.component.scss

+21-7
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
.right {
3636
display: flex;
3737
}
38+
3839
.header-nav {
3940
display: flex;
4041

@@ -52,18 +53,16 @@
5253
}
5354

5455
.content {
56+
grid-template-columns: auto 1fr auto;
5557
@include media-breakpoint-down(sm) {
5658
.search-bar {
5759
display: none;
5860
}
5961
}
60-
@include media-breakpoint-down(md) {
61-
grid-template-columns: auto 1fr auto !important;
62-
}
6362
@include media-breakpoint-up(md) {
6463
display: grid !important;
6564
gap: 10px;
66-
grid-template-columns: auto 1fr 200px;
65+
6766
.search-bar-mobile {
6867
display: none;
6968
}
@@ -109,6 +108,7 @@
109108
width: 90px;
110109
}
111110
}
111+
112112
.navbar-toggler {
113113
border: none;
114114
}
@@ -160,8 +160,9 @@
160160
-khtml-user-select: none; /* Konqueror HTML */
161161
-moz-user-select: none; /* Old versions of Firefox */
162162
-ms-user-select: none; /* Internet Explorer/Edge */
163-
user-select: none; /* Non-prefixed version, currently
164-
supported by Chrome, Edge, Opera and Firefox */
163+
user-select: none;
164+
/* Non-prefixed version, currently
165+
supported by Chrome, Edge, Opera and Firefox */
165166
}
166167

167168
.account {
@@ -177,7 +178,7 @@
177178
display: flex;
178179
align-items: center;
179180
margin-left: auto;
180-
margin-right: 24px;
181+
181182
@include media-breakpoint-down(sm) {
182183
margin-left: 0;
183184
}
@@ -190,6 +191,15 @@
190191
width: 30px;
191192
border-radius: 50%;
192193
}
194+
195+
.profile-name {
196+
display: inline-block;
197+
vertical-align: middle;
198+
white-space: nowrap;
199+
max-width: 280px;
200+
overflow: hidden;
201+
text-overflow: ellipsis;
202+
}
193203
}
194204

195205
/*
@@ -339,6 +349,10 @@
339349

340350
a {
341351
cursor: pointer;
352+
353+
&:active {
354+
background-color: $light-mode-grey-secondary;
355+
}
342356
}
343357

344358
@include media-breakpoint-down(sm) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<div class="modal-information-container">
2+
<button type="button" class="close pull-right" aria-label="Close" (click)="bsModalRef.hide()">
3+
<span aria-hidden="true">&times;</span>
4+
</button>
5+
<div class="modal-body">
6+
<h2>{{titleText}}</h2>
7+
<p [innerHTML]="mainText"></p>
8+
<div class="row">
9+
<div class="col-12 modal-buttons">
10+
<button type="button" class="cancel" (click)="bsModalRef.hide()">{{secondaryButtonText}}</button>
11+
<button type="button" class="primary" (click)="onClickCta()">{{ctaButtonText}}</button>
12+
</div>
13+
</div>
14+
15+
</div>
16+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
*
3+
* Digital Excellence Copyright (C) 2020 Brend Smits
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Lesser General Public License as published
7+
* by the Free Software Foundation version 3 of the License.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty
11+
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12+
* See the GNU Lesser General Public License for more details.
13+
*
14+
* You can find a copy of the GNU Lesser General Public License
15+
* along with this program, in the LICENSE.md file in the root project directory.
16+
* If not, see https://www.gnu.org/licenses/lgpl-3.0.txt
17+
*
18+
*/
19+
@import "assets/styles/variables";
20+
21+
.modal-body {
22+
position: unset;
23+
}
24+
25+
.modal-information-container {
26+
background: #f8f8f8;
27+
width: 100%;
28+
max-width: 600px;
29+
border-radius: 6px;
30+
border: none;
31+
outline: none;
32+
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);
33+
padding: 15px;
34+
35+
button.close {
36+
border: none;
37+
background: none;
38+
display: flex;
39+
float: right;
40+
&:focus,
41+
&:active {
42+
border: none;
43+
outline: none;
44+
}
45+
}
46+
}
47+
48+
.modal-buttons {
49+
display: flex;
50+
justify-content: flex-end;
51+
52+
button:nth-child(1) {
53+
margin-right: 15px;
54+
}
55+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Component, EventEmitter, Output } from '@angular/core';
2+
import { BsModalRef } from 'ngx-bootstrap/modal';
3+
4+
@Component({
5+
selector: 'app-modal-information-generic',
6+
templateUrl: './modal-information-generic.component.html',
7+
styleUrls: ['./modal-information-generic.component.scss']
8+
})
9+
export class ModalInformationGenericComponent {
10+
11+
@Output() cta = new EventEmitter<boolean>(true);
12+
13+
public readonly titleText = '';
14+
public readonly mainText = '';
15+
public readonly ctaButtonText = '';
16+
public readonly secondaryButtonText = '';
17+
18+
constructor(
19+
public bsModalRef: BsModalRef,
20+
) { }
21+
22+
ngOnInit(): void {
23+
}
24+
25+
/**
26+
* Method which triggers when remove is confirmed.
27+
* Emits true via the output property and closes the modal.
28+
*/
29+
public onClickCta(): void {
30+
this.cta.emit(true);
31+
this.bsModalRef.hide();
32+
}
33+
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<!--
2+
3+
Digital Excellence Copyright (C) 2020 Brend Smits
4+
5+
This program is free software: you can redistribute it and/or modify
6+
it under the terms of the GNU Lesser General Public License as published
7+
by the Free Software Foundation version 3 of the License.
8+
9+
This program is distributed in the hope that it will be useful,
10+
but WITHOUT ANY WARRANTY; without even the implied warranty
11+
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12+
See the GNU Lesser General Public License for more details.
13+
14+
You can find a copy of the GNU Lesser General Public License
15+
along with this program, in the LICENSE.md file in the root project directory.
16+
If not, see https://www.gnu.org/licenses/lgpl-3.0.txt
17+
18+
-->
19+
<div id="overlay" (click)="this.bsModalRef.hide();"></div>
20+
21+
<div class="modal-potential-new-owner-user-email-confirmation-container">
22+
<div class="modal-body">
23+
<h6>Are you sure you want to ask project transfership to {{email}}?</h6>
24+
<div class="row">
25+
<div class="col-12 modal-buttons">
26+
<button type="button" class="cancel" (click)="bsModalRef.hide()">Cancel</button>
27+
<button type="button" class="primary" (click)="onAcceptClicked()">Accept</button>
28+
</div>
29+
</div>
30+
</div>
31+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
.modal-potential-new-owner-user-email-confirmation-container {
2+
padding: 10px;
3+
z-index: 1151;
4+
position: relative;
5+
background-color: #fff;
6+
7+
h6 {
8+
width: 90%;
9+
margin-bottom: 10px;
10+
}
11+
12+
button {
13+
margin-right: 10px;
14+
}
15+
}
16+
17+
#overlay {
18+
position: fixed;
19+
display: block;
20+
width: 100%;
21+
height: 100%;
22+
top: 0;
23+
left: 0;
24+
background-color: #000;
25+
opacity: 0.5;
26+
z-index: 1150;
27+
cursor: pointer;
28+
transition: opacity .5s ease-in;
29+
}

0 commit comments

Comments
 (0)